簡單介紹:
Dashboard是一個基於web的Kubernetes用戶界面。您可以使用Dashboard將容器化應用程序部署到Kubernetes集群,對容器化應用程序進行故障診斷,並管理集群資源。可以使用Dashboard來獲得運行在集群上的應用程序的概觀,以及創建或修改單個Kubernetes資源(如Deployments, Jobs, DaemonSets等)。例如,您可以擴展deployment、啟動滾動更新、重啟pod或使用deploy向導部署新應用程序。
測試環境:
同之前部署的集群環境,如下:
System | Hostname | IP |
CentOS 7.6 | k8s-master | 138.138.82.14 |
CentOS 7.6 | k8s-node1 | 138.138.82.15 |
CentOS 7.6 | k8s-node2 | 138.138.82.16 |
安裝步驟:
1. 在master節點直接運行命令
[root@tlsw-k8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
注意:官方鏡像被牆,最好提前下載好yaml中的鏡像文件,可以參考集群部署時的鏡像下載腳本。
2. 查看運行狀態
[root@k8s-master ~]# kubectl get po -n kube-system |grep dashboard kubernetes-dashboard-5f7b999d65-45vlk 1/1 Running 0 33s
3. 創建訪問賬戶
這里使用Kubernetes的服務帳戶機制創建一個新用戶,授予該用戶管理權限,並使用綁定到該用戶的承載令牌登錄到dashboadr web界面。
說明:網上有通過修改yaml文件以NodePort方式登錄dashboard,測試發現可能會存在受限於瀏覽器或者其他原因不夠穩妥,故采用以下方式:
首先在命名空間kube-system中創建名為admin-user的服務帳戶,文件內容如下:
[root@k8s-master ~]# cat dashboard_service_account_admin.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system
然后,再創建一個集群角色綁定,文件內容如下:
[root@k8s-master ~]# cat dashboard_cluster_role_binding_admin.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system
發布到系統中去:
[root@k8s-master ~]# kubectl apply -f dashboard_service_account_admin.yaml serviceaccount/admin-user created [root@k8s-master k8s_dashboard]# kubectl apply -f dashboard_cluster_role_binding_admin.yaml clusterrolebinding.rbac.authorization.k8s.io/admin-user created
3. 獲取用戶登錄Token
[root@k8s-master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
輸出如下(記下其中的Token值,登錄要用):

[root@k8s-master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') Name: admin-user-token-lj6t8 Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: 244cf82e-6a36-11e9-a1f0-005056918527 Type: kubernetes.io/service-account-token Data ==== namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpzCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdwJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWxqNnQ4Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyNDRjZjgyZS02hTM2LTExZTktYTFmMC0wMDUwNTY5MTg1MjciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.n-1jqLG-AL6Nmg4dPO20wzMCcQHkBogFx454Ym152xM3YlOdbu6fEak_FLOsFofwaEoM-mD8qyLhmxu0PooXjshEQ9zFFrIxKDR-eV_AXiE63tMG8I08uBYnTDobVUTwPzBtHQ3gL7Cupgly0Qk7sZgkjwrtIuQDoqF8e4BivKo6GsJPWoBXjnJPGFbhLCqarYXK_9jVWAB2uTwA3ODEoobzO975es9AiuY4-NtnM9ym7_Siz8U74ArA51X_pThRvONIzfbad7BqVmLRJ4TV_k36WDwYVdzp1gD83LDbVmINVLdNk0wrkVrlS36yJRquAmzx8xJ_YfPzzElI_ep8qQ ca.crt: 1025 bytes
4. 創建導入瀏覽器的.p12文件
[root@k8s-master ~]# grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt [root@k8s-master ~]# grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key [root@k8s-master ~]# openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-web-client"
取出生成的kubecfg.p12文件,准備導入瀏覽器。
5. 將kubecfg.p12導入瀏覽器(這里使用谷歌瀏覽器)
導入成功后,重啟瀏覽器。
6. 登錄Dashboard
在瀏覽器地址欄輸入:
https://Your_Master_IP:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
跳出選擇證書后,顯示如下:
輸入Token值后,進入:
至此,kubernetes的web界面dashboard安裝完成。
結束.