K8s的監控之三種可視化UI界面部署

博文大綱:
1、部署dashboard的Web-UI界面
2、部署weave-scope監控k8s集羣
3、部署Prometheus服務

1、部署dashboard的Web-UI界面

一、下載yaml文件配置並執行
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署node

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
[root@master ~]# vim recommended.yaml +39  //定位到39行,修改其提供的service資源
---

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: 31001    //映射到宿主機的端口爲31001
  selector:
    k8s-app: kubernetes-dashboard
//修改完保存退出便可

[root@master ~]# kubectl apply -f recommended.yaml   //執行yaml文件
[root@master ~]# kubectl  get  pod -n kubernetes-dashboard   //確認其正常運行
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-76679bc5b9-nzcl9   1/1     Running   0          55s
kubernetes-dashboard-65bb64d6cb-n95bf        1/1     Running   0          55s

[root@master ~]# kubectl  get  svc -n kubernetes-dashboard  
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.107.61.31     <none>        8000/TCP        92s
kubernetes-dashboard        NodePort    10.107.129.197   <none>        443:31001/TCP   92s
//查看service資源,也屬正常狀態,而且已經映射了咱們指定的端口

二、客戶端經過瀏覽器訪問
注:該版本以前的dashboard,必須使用火狐瀏覽器纔可訪問,多是版本更新解決了這一問題,因此本次版本沒有什麼硬性的要求。
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
方法一:使用Token的方式登陸git

[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system
//建立一個dashboard的管理用戶
[root@master ~]# kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
//將建立的dashboard用戶綁定爲管理用戶

[root@master ~]# kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-h7w7r                      kubernetes.io/service-account-token   3      12s
//獲取剛剛建立的用戶對應的token名稱

[root@master ~]# kubectl  describe  secrets  -n  kube-system  dashboard-admin-token-h7w7r 
//查看token的詳細信息

K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
注:出現以上頁面表示部署成功,而且監控到了各個節點的信息!!!github

方法二:使用kubeconfig的方式登陸web

[root@master ~]# kubectl get secrets -n kube-system | grep dashboard  //查看剛纔建立的token
dashboard-admin-token-h7w7r                      kubernetes.io/service-account-token   3      13m

[root@master ~]#  kubectl describe secrets -n kube-system  dashboard-admin-token-h7w7r 
//查看token的詳細信息,會獲取token

[root@master ~]# DASH_TOKEN=$(kubectl get secrets -n kube-system dashboard-admin-token-h7w7r -o jsonpath={.data.token} | base64 -d)
//將token的信息生成一個變量

[root@master ~]# kubectl config set-cluster kubernets --server=192.168.45.129:6443  --kubeconfig=/root/.dashboard-admin.conf
//將k8s集羣的配置信息寫入到一個文件中,文件可自定義

[root@master ~]# kubectl config set-credentials dashboard-admin --token=${DASH_TOKEN} --kubeconfig=/root/.dashboard-admin.conf
//將token的信息也寫入到文件中(同一個文件)

[root@master ~]# kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/.dashboard-admin.conf
//將用戶信息也寫入文件中(同一個文件)

[root@master ~]# kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/root/.dashboard-admin.conf
//將上下文的配置信息也寫入文件中(同一個文件)

[root@master ~]# sz /root/.dashboard-admin.conf
//最後將配置信息導入到客戶端本地

K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
注:以上關於dashboard簡單就介紹到這了!!!json

2、部署weave-scope監控k8s集羣

一、github搜索「scope」,而後點擊以下:
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署vim

[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml  //將得到的連接下載
[root@master ~]# vim scope.yaml   +212    //編輯yaml文件
//定位到212行,更改service類型爲NodePort,並指定端口
    spec:
      type: NodePort   //修改類型爲NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 31002    //映射到宿主的端口爲31002
[root@master ~]# kubectl apply -f scope.yaml   //執行yaml文件
[root@master ~]# kubectl  get  pod  -n weave   //查看容器的運行狀況,肯定處於正常運行
NAME                                        READY   STATUS    RESTARTS   AGE
weave-scope-agent-s66hp                     1/1     Running   0          112s
weave-scope-agent-vjn75                     1/1     Running   0          112s
weave-scope-agent-wzt8z                     1/1     Running   0          112s
weave-scope-app-b965dccb7-l5bgp             1/1     Running   0          112s
weave-scope-cluster-agent-6598584d8-jhc5b   1/1     Running   0          112s

[root@master ~]# kubectl get svc -n weave    //查看常見的svc資源對應的端口信息
NAME              TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
weave-scope-app   NodePort   10.96.65.55   <none>        80:31002/TCP   2m38s

K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
注:以上關於weave-scope簡單就介紹到這了!!!api

3、部署Prometheus服務

在部署以前,先來了解一下Prometheus各個組件的做用以下:

* MertricServer:是k8s集羣資源使用狀況的聚合器,收集數據給K8s集羣內使用,如:kubectl,hpa,scheduler
* PrometheusOperator:是一個系統檢測和警報工具箱,用來存儲監控數據;
* NodeExporter:用於各node的關鍵度量指標狀態數據;
* kubeStateMetrics:收集k8s集羣內資源對象數據,指定告警規則;
* Prometheus:採用pull方式收集apiserver,scheduler,controller-manager,kubelet組件數據,經過http協議傳輸;
* Grafana:是可視化數據統計和監控平臺。

一、刪除前兩個監控平臺,要不太消耗系統資源以下:瀏覽器

[root@master ~]# kubectl delete -f scope.yaml 
[root@master ~]# kubectl delete -f kubernetes-dashboard.yaml

二、獲取yaml文件修改並執行
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署markdown

[root@master ~]# yum -y install git  //安裝git命令
[root@master ~]# git clone https://github.com/imirsh/kube-prometheus.git  
//將項目克隆到本地
//下載過程當中較慢請耐心等待!!!!!!!!!

[root@master ~]# cd kube-prometheus/manifests/
[root@master manifests]# vim grafana-service.yaml
//更改grafana資源對應的service資源的類型及映射的端口
apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort               //添加類型爲NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 31010          //自定義映射的端口
  selector:
    app: grafana

[root@master manifests]# vim alertmanager-service.yaml 
//更改alertmanager資源對應的service資源的類型及映射的端口
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: 31020          //自定義映射的端口
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

[root@master manifests]# vim prometheus-service.yaml 
//更改prometheus資源對應的service資源的類型及映射的端口
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: 31030          //自定義映射的端口
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP

[root@master manifests]# pwd          //確認當前所在目錄
/root/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/   //必須先執行setup目錄下的全部yaml文件
[root@master manifests]# cd ..          //返回上層目錄
[root@master kube-prometheus]# pwd        //確認目錄位置
/root/kube-prometheus
[root@master kube-prometheus]# kubectl apply -f manifests  //將該目錄下的yaml文件所有執行
[root@master kube-prometheus]# kubectl get pod -n monitoring 
//確保該名稱空間下的全部Pod都是Running狀態
//若是是選擇在線下載鏡像,那麼可能要半個小時左右才能夠正常運行

[root@master kube-prometheus]#  kubectl get svc -n monitoring | grep grafana
grafana               NodePort    10.97.206.97     <none>        3000:31010/TCP      12m
//查看grafana資源對應的service資源映射的端口

三、客戶端訪問羣集中任意節點的IP+31010端口,便可看到如下界面(默認用戶名和密碼都是admin):
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署
K8s的監控之三種可視化UI界面部署session

本地自帶的模板有點low,能夠自行導入好看的模板以下:

相關文章
相關標籤/搜索