k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

1.ダッシュボードのWeb-UIインターフェースをデプロイします

1. yamlファイルをダウンロードする

//プロジェクトを見つけるためのgithub検索ダッシュボード

//下载yaml文件
[root@docker-k8s01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
//编辑yaml文件
[root@docker-k8s01 ~]# vim recommended.yaml 
//跳转到40行左右,修改其对应的service,类型配置为Nodeport
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort    //添加类型为NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31010      //映射到宿主机的端口为31010
  selector:
    k8s-app: kubernetes-dashboard
//执行yaml文件
[root@docker-k8s01 ~]# kubectl apply -f recommended.yaml 
//查看Pod是否运行
[root@docker-k8s01 ~]# kubectl get pod -n kubernetes-dashboard 
//查看其详细信息
[root@docker-k8s01 ~]# kubectl describe pod -n kubernetes-dashboard dashboard-metrics-scraper-76679bc5b9-sbcvw 
//确保该yaml文件提供的pod都正常运行
[root@docker-k8s01 ~]# kubectl get svc -n kubernetes-dashboard 
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.65.117   <none>        8000/TCP        3m3s
kubernetes-dashboard        NodePort    10.110.154.42   <none>        443:31010/TCP   3m3s

2.訪問テスト

//ここで使用されているダッシュボードのバージョンは以前のバージョンと比較して高いため、Firefoxブラウザを使用してアクセスする必要がありますが、ここでは不要です。

https://192.168.171.151:31010にアクセスします(クラスター内の任意のノードIPにアクセスできます)
k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//创建dashboard的管理用户
[root@docker-k8s01 ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//绑定用户为集群的管理员
[root@docker-k8s01 ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//获取刚刚创建的用户Token
[root@docker-k8s01 ~]# kubectl get secrets -n kube-system | grep dashboard-admin
dashboard-admin-token-zbdqm                      kubernetes.io/service-account-token   3      63s
[root@docker-k8s01 ~]# kubectl describe secrets -n kube-system dashboard-admin-token-zbdqm 
//注意:上面的最后一段取决于上面查看到的用户的secrets名字。
Name:         dashboard-admin-token-zbdqm
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: e9716e34-581a-4c30-b601-0a2a254d4a26

Type:  kubernetes.io/service-account-token

Data
====
namespace:  11 bytes
token:        //将token字段后面的值复制下来,如下图      

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

トークン値を下に貼り付けます
k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント
//これまでのところ、Webインターフェイスでクラスターノードの情報を監視し、リソースオブジェクトを作成できます

注:通常、リソースオブジェクトはこの上に作成されません

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント
方法2

//查看刚才创建的token
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-22n2v                      kubernetes.io/service-account-token   3      11m
//查看token的详细信息,会获取token
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-22n2v
//将token的信息生成一个变量
[root@master ~]#  DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-22n2v -o jsonpath={.data.token} | base64 -d)
//将k8s集群的配置信息写入到一个文件中,文件可自定义
[root@master ~]# kubectl config set-cluster kubernets --server=192.168.10.52:6443 --kubeconfig=/root/.dashboard-admin.conf
Cluster "kubernets" set.
//将token的信息也写入到文件中(同一个文件)
[root@master ~]#  kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf
User "dashboard-admin" set.
//用户信息也写入文件中(同一个文件)
[root@master ~]#  kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
Context "dashboard-admin@kubernetes" created.
//将上下文的配置信息也写入文件中(同一个文件)
[root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
Switched to context "dashboard-admin@kubernetes".
//最后将配置信息导入到客户端本地
[root@master ~]# sz /root/.dashboard-admin.conf

//ファイルをエクスポートしたら、トークンを入力したインターフェイスにログインし、kubeconfigを選択して、ここでエクスポートしたファイルをアップロードして、[ログイン]をクリックします。

私は怠惰です、ここには写真がありません、許してください。

2、k8sクラスターを監視するために織りスコープを展開する

1. yamlファイルをダウンロードする

// githubで「スコープ」を検索

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント
//ページをドロップダウンし、kubernetesをクリックします

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//新しいページに入った後、もう一度プルダウンします

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//将获得的链接下载
[root@docker-k8s01 ~]# wget https://cloud.weave.works/k8s/scope.yaml
//修改yaml文件
[root@docker-k8s01 ~]# vim scope.yaml 
//跳转到大概197行左右,修改其service的端口类型
spec:
      type: NodePort    //类型为NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 30123    //配置映射到宿主机的端口
[root@docker-k8s01 ~]# kubectl apply -f scope.yaml 
//查看容器的运行情况
[root@docker-k8s01 ~]# kubectl get pod -o wide -n weave 
NAME                                        READY   STATUS    RESTARTS   AGE    IP                NODE           NOMINATED NODE   READINESS GATES
weave-scope-agent-9vj2w                     1/1     Running   0          119s   192.168.171.151   docker-k8s01   <none>           <none>
weave-scope-agent-h4gt6                     1/1     Running   0          119s   192.168.171.152   docker-k8s03   <none>           <none>
weave-scope-agent-lqzbq                     1/1     Running   0          119s   192.168.171.150   docker-k8s02   <none>           <none>
weave-scope-app-b965dccb7-ph6zg             1/1     Running   0          119s   10.244.1.3        docker-k8s02   <none>           <none>
weave-scope-cluster-agent-6598584d8-h8b9q   1/1     Running   0          119s   10.244.2.3        docker-k8s03   <none>           <none>
//DaemonSet资源对象:weave-scope-agent(代理):负责收集节点的信息;
//deployment资源对象:weave-scope-app(应用):从agent获取数据,通过web UI展示并与用户交互;
//DaemonSet资源对象的特性和deployment相比,就是DaemonSet资源对象会在每个节点上都运行且只能运行一个pod。
//由于每个节点都需要监控,所以用到了DaemonSet这种资源对象

2.訪問テスト

//クラスターのマップされたポート30123にアクセスします

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//スコープのウェブインターフェースでは、コンテナーのターミナルを開く、そのログ情報を表示するなど、ポッド、ノード、その他の詳細情報を表示できます...

3、Prometheusサービスをデプロイする

Prometheusコンポーネントの役割:

  • MertricServer:これは、k8sクラスターのリソース使用量のアグリゲーターであり、kubectl、hpa、schedulerなどのK8sクラスターで使用するためのデータを収集します
  • PrometheusOperator:監視データの保存に使用されるシステム検出およびアラームツールボックスです。
  • NodeExporter:各ノードの主要なメトリックステータスデータに使用されます。
  • kubeStateMetrics:k8sクラスターでリソースオブジェクトデータを収集し、アラームルールを指定します。
  • Prometheus:APIサーバー、スケジューラー、コントローラーマネージャー、kubeletコンポーネントのデータをプル方式で収集し、httpプロトコルを介して送信します。
  • Grafana:視覚的なデータ統計とモニタリングのためのプラットフォームです。

1. prometheusで必要なファイルをダウンロードします

// GitHubでPrometheusを検索してGitダウンロードリンクを取得します

//安装git命令
[root@docker-k8s01 ~]# yum -y install git
//创建目录(可忽略)
[root@docker-k8s01 ~]# mkdir prometheus
[root@docker-k8s01 ~]# cd prometheus/
//克隆github库
[root@docker-k8s01 prometheus]# git clone https://github.com/imirsh/kube-prometheus.git
//进入到克隆目录
[root@docker-k8s01 prometheus]# cd kube-prometheus/manifests/

2.各コンポーネントサービスのyamlファイルを変更する

//修改grafana的yaml文件
[root@docker-k8s01 manifests]# cat grafana-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort    //改为NodePort类型
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30333    //映射端口为30333
  selector:
    app: grafana
//修改prometheus的yaml文件
[root@docker-k8s01 manifests]# cat prometheus-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort    //类型为NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30444    //映射端口为30444
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
//修改alertmanager的yaml文件
[root@docker-k8s01 manifests]# cat alertmanager-service.yaml 

apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort       //类型为NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 30555    //映射端口为30555
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

3. yamlファイルを実行する

//确定当前路径
[root@docker-k8s01 manifests]# pwd
/root/prometheus/kube-prometheus/manifests
//执行setup目录下的所有yaml文件,记住是所有!
[root@docker-k8s01 manifests]# kubectl apply -f setup/
//建议多执行几次,因为目录下的yaml文件太多,可能执行的时候可能会落下一两个没有执行
[root@docker-k8s01 manifests]# cd ..      //返回上级目录
[root@docker-k8s01 kube-prometheus]# pwd
/root/prometheus/kube-prometheus
//执行该目录下的所有yaml
[root@docker-k8s01 kube-prometheus]# kubectl apply -f manifests/
//确保所有pod都正常运行
[root@docker-k8s01 kube-prometheus]# kubectl get pod -n monitoring -w

次のyamlファイルが実行されると、各ノードはインターネット上に多数のミラーをダウンロードします。ミラーのダウンロードに時間がかかりすぎないようにするには、まずミラーをローカルにダウンロードしてから、各ノードにインポートしてから、yamlファイルを実行します。しばらく。

4.クライアントがクラスター内の任意のノードのIP + 30100ポートにアクセスすると、次のインターフェースが表示されます(デフォルトのユーザー名とパスワードは両方ともadminです)。

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//テンプレートを追加

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント

//「インポート」をクリックし、次の3つのテンプレートをインポートします

k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント
k8sクラスター用の3種類のWeb-UIインターフェースのデプロイメント
もちろん、grafanaのWebサイトにアクセスして、ダウンロードするのに適したテンプレートを見つけることもできます。ここでは、テンプレートの追加方法について詳しく説明しません。

おすすめ

転載: blog.51cto.com/14227204/2532714