Kubernetes學習與應用(07)——安裝Dashboard監控插件


1. Dashboard概述

Dashboard是基於Web的Kubernetes用戶界面,我們可以通過Dashboard直接管理集群資源,運行、創建或修改集群中的資源,監控容器中的資源狀態和發生的錯誤信息。還可以使用部署向導來擴展部署,啟動滾動更新,重新啟動Pod或部署新應用程序。

2. 安裝Dashboard

安裝docker鏡像

不能FQ的話,需要先下載鏡像,然后再調用kubectl安裝,安裝時注意鏡像的版本必須和yaml的一致

docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0
docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker image rm registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0

PS:如果直接安裝不了,可以使用下面命令進行查找,然后再替換源進行安裝

docker search kubernetes-dashboard-amd64

 

如果可以FQ,則直接執行下面代碼安裝

下載recommended.yaml文件(這種方式下載不了的話,可以直接將url復制到瀏覽器打開,然后將內容保存到recommended.yaml中,再上傳到服務器上)

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

修改recommended.yaml配置

vi recommended.yaml

找到第一個kind: Service,內容如下:

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

將內容修改為:

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard

安裝插件

kubectl create -f recommended.yaml

檢查安裝(插件加載與初始化需要等待一段時間,提交命令后需要等待一段時間,dashboard的狀態才會變為Running)

kubectl get pods -n kubernetes-dashboard

dashboard狀態

NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-76585494d8-xnpq5   1/1     Running   0          25m
kubernetes-dashboard-5996555fd8-ndsth        1/1     Running   0          25m

輸入命令

kubectl get service -n kubernetes-dashboard

查看服務暴露的端口

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.96.238.121   <none>        8000/TCP        27m
kubernetes-dashboard        NodePort    10.96.198.238   <none>        443:30001/TCP   27m

kubernetes-dashboard服務所暴露的30001端口就是我們可以直接訪問的地址了,即我們可以直接用http://服務器ip:30001 訪問Dashboard了

 

注意

如果安裝后,dashboard狀態直接爆錯,沒有處於Running狀態,可以執行下面命令刪除插件與鏡像,使用docker pull安裝鏡像的可以更換其他版本鏡像與yaml進行安裝

# 刪除dashboard插件,recommended.yaml為安裝時的名稱,執行刪除后,docker里對應的鏡像沒不會同步刪除
kubectl delete -f recommended.yaml
# 如果將要安裝的鏡像版本同已安裝的不一致,需要將鏡像刪除干凈后,再重新安裝
# 查看當前服務器的docker鏡像,獲取IMAGE ID,需要每一台都執行刪除
docker images
# REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
# kubernetesui/dashboard                               v2.0.0-beta8        eb51a3597525        2 weeks ago 

# 執行刪除命令,刪除指定IMAGE ID的鏡像
docker rmi eb51a3597525
# 如果該鏡像ID綁定了多個容器,則需要用下面命令刪除
docker rmi kubernetesui/dashboard:v2.0.0-beta8

 

3. 檢查安裝

啟動Web訪問,accept-hosts需要綁定當前服務器ip,即綁定接收請求的地址(可以使用正則表達式),不綁定訪問可能會被拒絕,直接返回“Forbidden”

nohup kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*'

直接用curl在服務器測試訪問

curl http://localhost:8001/api/

如果能返回下面json串,就表示Dashboard已安裝成功

{
  "kind": "APIVersions",
  "versions": [
    "v1"
  ],
  "serverAddressByClientCIDRs": [
    {
      "clientCIDR": "0.0.0.0/0",
      "serverAddress": "192.168.10.161:6443"
    }
  ]
}

打開瀏覽器,進入Dashboard web管理平台 http://192.168.10.161:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

或者是下面地址

http://192.168.10.161:30001

創建dashboard web訪問管理員賬號

# 創建賬號
kubectl create serviceaccount admin-user -n kube-system
# 綁定管理員權限
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kube-system
# 查看賬號名稱
kubectl get secret -n kube-system | grep admin-user
# NAME                                             TYPE                                  DATA   AGE
# admin-user-token-fdvh6                           kubernetes.io/service-account-token   3      69s

# 查看賬號Token
kubectl describe secret admin-user-token-fdvh6 -n kube-system |grep '^token'|awk '{print $2}'

Token值

eyJhbGciOiJSUzI1NiIsImtpZCI6IkxkZ2RrdW1qT2VRYWJUV2RYY3JicENxY0pIUDN2OXZLREJ1N1BweE9od2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1zcms5dCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6Ijc3MWFkZGNjLTRjNzAtNGM1OC1hMTA1LWIwNDZkZWYzZWE4OCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.P8gptD6tc_HhanEhV8G-wlObi_yqNsIoj5Zdvev_qABv2HpOyWDhc3CiuDtP3RzdJ7UU0OjcBsRKQViQPW-r9NgTA5-DjrBSIKqWRDMV63HwKPOaYF1_LmGHMQYKy0OdugYZumjDo5whJFn-0XVTXKrea3QqFAL7_MVMoUbiDTZ1vQgL-AQziwk5WrCOhrXjSzcoRge3W5Fs-6z7-8ZHege3aTpKY2TxtWdu0bvqVnnb6Yd0VqAeQDaMy12D5n80BJno3l2WoWeEk-KSBTXSA_7Z2wwTcrDWL4E38sItRIkRRLDGtpP7AIZtQTWohzigeKVkMHO7iaQ6e3dmRkLLlg

在瀏覽器登錄窗口選擇Token登錄,輸入上面Token點擊登錄,進入管理界面

如果點擊登錄無響應或出錯,可以按下面方法查看日志,檢查錯誤信息

kubectl get pods --namespace=kube-system | grep dashboard

屏幕上會顯示當前dashboard運行的服務,看看服務運行狀態是否正常

kubernetes-dashboard-74c96fd8ff-pdft8   1/1     Running   0          3h3m

查看指定節點的詳細消息,看看是否有錯誤事件記錄

kubectl describe pod kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system

輸入命令,實時查看服務日志信息,分析日志錯誤信息

kubectl logs -f kubernetes-dashboard-74c96fd8ff-pdft8 -n kube-system

 

4. 安裝Heapster

默認安裝的dashboard無法展示集群的度量指標信息,此時就需要安裝heapster插件

Heapster 插件使用包含三部分內容:

Heapster:顯示各 Nodes、Pods 的 CPU、內存、負載等利用率曲線圖。

InfluxDB:存儲 Pod 信息相關的數據庫, Heapster 獲取數據之后, 可以指定存儲在 InfluxDB。

Grafana:這個主要是用於顯示 InfluxDB 里面的數據情況, 可以讓我們很直觀看到數據變化。

安裝InfluxDB

下載安裝包

wget https://repos.influxdata.com/rhel/6Server/x86_64/stable/influxdb-1.7.9.x86_64.rpm

安裝rmp

rpm -ivh influxdb-1.7.9.x86_64.rpm

啟動Influxdb服務

systemctl start influxdb

systemctl enable influxdb

 

5. 常用命令

刪除指定賬號

kubectl delete serviceaccount -n kube-system admin

刪除指定角色

kubectl delete clusterrole -n kube-system admin

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM