k8s羣集的三種Web-UI界面部署

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

一、部署dashboard的Web-UI界面

1、下載yaml文件配置並執行

#下載github上的項目(github搜索dashboard即可找到該項目)
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recommended/kubernetes-dashboard.yaml
[root@master ~]# vim kubernetes-dashboard.yaml 
#跳轉至112行,修改其指定的鏡像,修改如下:
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
#默認指定的是Google的鏡像,國外的下載不下來,所以要改爲國內阿里雲的
#跳轉到150行,修改其對應的service,將其類型配置爲NodePort,修改如下:
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort  #添加類型爲NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30230        #映射到宿主機的端口爲30230
  selector:
    k8s-app: kubernetes-dashboard
#修改完成後,保存退出即可
[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml    #執行yaml文件
[root@master ~]# kubectl get pod -n kube-system | grep dashboard    #確認其正常運行
kubernetes-dashboard-6cfb7d8f54-l6jgj   1/1     Running   0          88s

2、客戶端通過火狐瀏覽器訪問

必須要用火狐瀏覽器,Google和默認的edge都無法訪問。

1)訪問https://192.168.20.6:30230 ,(192.168.20.6是我這裏master的IP,實際上訪問羣集內的任意節點IP+30230端口都可以),然後點擊如下:

k8s羣集的三種Web-UI界面部署

2)在終端創建用戶並查看登錄令牌:

[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
[root@master ~]# kubectl get secrets -n kube-system | grep dashboard-admin  #獲取剛剛創建的用戶的token
dashboard-admin-token-97g76                      kubernetes.io/service-account-token   3      15s
[root@master ~]# kubectl describe secrets -n kube-system dashboard-admin-token-97g76
#注意:上面的最後一段取決於上面查看到的用戶的secrets名字。
Name:         dashboard-admin-token-97g76
Namespace:    kube-system
        ..................#省略部分內容
Data
====
token:      #將該token字段後面的值複製下來

3)將token值粘貼到下面:

k8s羣集的三種Web-UI界面部署

4)至此,即可在web界面進行監控羣集節點的信息,及創建資源對象(一般不會在這上面進行創建資源對象):

k8s羣集的三種Web-UI界面部署

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

這個服務的yaml文件在github上不太容易找到,還是附上找這個鏈接的過程吧!如下:

1、github搜索“scope”,然後點擊如下:

k8s羣集的三種Web-UI界面部署

2、進入後,下拉頁面,點擊“kubernetes”,如下:

k8s羣集的三種Web-UI界面部署

3、進入後,再次下拉頁面:

k8s羣集的三種Web-UI界面部署

4、將獲得的鏈接下載:

[root@master ~]# wget https://cloud.weave.works/k8s/scope.yaml

5、修改下載的yaml文件並運行:

[root@master ~]# vim scope.yaml  #編輯yaml文件
#跳轉至197行,修改其service的端口類型
    spec:
      type: NodePort         #修改類型爲NodePort
      ports:
        - name: app
          port: 80
          protocol: TCP
          targetPort: 4040
          nodePort: 30231        #映射到宿主的端口爲30231
[root@master ~]# kubectl apply -f scope.yaml      #執行yaml文件
#查看容器的運行情況,確定處於正常運行
[root@master ~]# kubectl get pod -o wide -n weave    #默認在weave名稱空間
NAME                                         READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE   READINESS GATES
weave-scope-agent-b4dwz                      1/1     Running   0          73s   192.168.20.8   node02   <none>           <none>
weave-scope-agent-lksqh                      1/1     Running   0          73s   192.168.20.7   node01   <none>           <none>
weave-scope-agent-mv6mj                      1/1     Running   0          73s   192.168.20.6   master   <none>           <none>
weave-scope-app-78cff98cbc-kxp9v             1/1     Running   0          73s   10.244.2.2     node02   <none>           <none>
weave-scope-cluster-agent-7cc889fbbf-ngf8j   1/1     Running   0          73s   10.244.1.3     node01   <none>           <none>
#DaemonSet資源對象:weave-scope-agent(代理):負責收集節點的信息;
#deployment資源對象:weave-scope-app(應用):從agent獲取數據,通過web UI展示並與用戶交互;
#DaemonSet資源對象的特性和deployment相比,就是DaemonSet資源對象會在每個節點上都運行且只能運行一個pod。
#由於每個節點都需要監控,所以用到了DaemonSet這種資源對象

6、瀏覽器訪問羣集的映射端口30231,如下:

k8s羣集的三種Web-UI界面部署

在scope的web界面中,可以查看很多的東西,pod、node節點等詳細信息,包括打開容器的終端,查看其日誌信息等等......

三、部署Prometheus服務

在部署之前,先來了解一下Prometheus各個組件的作用吧!

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

1、在開始前,需要先刪除前兩個監控平臺,要不太消耗系統資源了,如下:

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

2、下載prometheus所需文件:

[root@master ~]# mkdir prometheus
[root@master ~]# cd prometheus/
[root@master prometheus]# yum -y install git       #安裝git命令
#克隆遠端github庫
[root@master prometheus]# git clone https://github.com/coreos/kube-prometheus.git
[root@master prometheus]# cd kube-prometheus/manifests/    #進入克隆下的目錄

3、修改各個組件service的yaml文件

[root@master manifests]# vim grafana-service.yaml    #修改grafana的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: 30100    #映射到宿主機30100端口
  selector:
    app: grafana
[root@master manifests]# vim prometheus-service.yaml    #修改prometheus的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: 30200    #映射到宿主機30200端口
  selector:
    app: prometheus
    prometheus: k8s
  sessionAffinity: ClientIP
[root@master manifests]# vim alertmanager-service.yaml    #修改alertmanager的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: 30300    #映射到宿主機30300端口
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP

4、執行yaml文件

當執行以下yaml文件時,每個節點會在互聯網上下載很多鏡像,爲了防止下載鏡像的時間過長,可以先將我提供的鏡像下載到本地,然後導入至各個節點,然後在執行下面的yaml文件,將會省些時間。(如果下載我提供的鏡像,建議寫個導入鏡像的腳本進行導入操作,避免手動導入,造成錯誤)

腳本示例如下:

[root@master ~]# vim a.sh  #腳本如下

#!/bin/bash
cd /root/image        #這個目錄下存放的只有我網盤中的鏡像
for i in `ls /root/image/`
do
  docker load < ${i}
done
[root@master ~]# sh a.sh      #執行腳本即可
#必須先執行setup目錄下的所有yaml文件,如下:
[root@master manifests]# pwd    #確定當前路徑
/root/prometheus/kube-prometheus/manifests
[root@master manifests]# kubectl apply -f setup/     #執行setup目錄下的所有yaml文件
#再執行manifests目錄下的yaml文件
[root@master manifests]# cd ..  #返回到上一級目錄
[root@master kube-prometheus]# kubectl apply -f manifests/   #執行yaml文件
[root@master kube-prometheus]# kubectl get pod -n monitoring  #確認所有pod正常運行
#如果是選擇在線下載鏡像,那麼可能要半個小時左右纔可以正常運行

5、客戶端訪問羣集中任意節點的IP+30100端口,即可看到以下界面(默認用戶名和密碼都是admin):

k8s羣集的三種Web-UI界面部署

根據提示更改密碼:

k8s羣集的三種Web-UI界面部署

添加模板:

k8s羣集的三種Web-UI界面部署

k8s羣集的三種Web-UI界面部署

依次點擊“import”進行導入下面三個模板:

k8s羣集的三種Web-UI界面部署

進行以下點擊,即可查看羣集內的監控狀態:

k8s羣集的三種Web-UI界面部署

k8s羣集的三種Web-UI界面部署

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章