Dashboard是Kubernetes的基本Web管理工具。Dashboard 1.x系列只能用於Kubernetes 1.16以前的版本。從Kubernetes 1.16開始,需要使用Dashboard 2,其部署方式有較大的變化(主要是獨立部署,命名空間和登錄授權方式變了)。這裏介紹在Kubernetes 1.21.0來部署管理界面Dashboard 2的方法和步驟。
1、安裝服務
- 參考:
安裝:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
拉取Dashboard的images:
docker pull kubernetesui/metrics-scraper:v1.0.6
docker pull kubernetesui/dashboard:v2.2.0
- 注意,有幾個變化:
- 現在的鏡像是兩個,以前只有一個。
- kubernetes-dashboard的docker鏡像庫位置名稱變了。
- 命名空間從kube-system變到kubernetes-dashboard。
- 登錄授權方式變了,下面將介紹具體方法。
2、訪問權限設置
包括創建服務賬號、設置服務賬號的role、獲取token等步驟。
2.1 創建服務訪問賬號
創建一個Service Account,命名爲 admin-user,放在
namespace kubernetes-dashboard
中。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
將上面內容保存爲文件dashboard-adminuser.yaml。
2.2 創建ClusterRoleBinding
大部分情況下,使用 kops
或 kubeadm
部署集羣后, ClusterRole
admin-Role
已經在集羣中存在,我們可以使用它,僅需要創建 ClusterRoleBinding
到我們的 ServiceAccount。
注意: apiVersion
of ClusterRoleBinding
資源在不同的 Kubernetes 版本中可能是不一樣的。Kubernetes v1.8
之前apiVersion
是 rbac.authorization.k8s.io/v1beta1。
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: kubernetes-dashboard
將上面的內容保存到文件dashboard-adminrole.yaml。
2.3 Bearer Token
首先,應用上面的兩個文件。如下:
kubectl apply -f dashboard-adminuser.yaml
kubectl apply -f dashboard-adminrole.yaml
找到 token 來登陸Dashboard的Web界面。執行下面的命令:
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
將token內容拷貝下來,在下面的 WebUI中使用。
3、訪問方式
需要將Dashboard的服務暴露出來讓客戶端訪問,包括運行代理和使用NodePort方法,還可以使用Ingress等方法,這裏不介紹,可以參考:
3.1 代理訪問模式
運行代理服務:
$ kubectl proxy
然後打開下面的連接:
在頁面中選擇token模式登陸,然後填入上面步驟複製的token即可。
3.2 NodePort模式
使用kubectl get svc/dashboardxxxxx -n kubernetes-dashboard來獲取dashboard的服務ID。
使用kubectl edit svc/dashboardxxxxx -n kubernetes-dashboard來編輯服務的參數,將網絡類型改爲NodePort,並增加端口30800。
然後打開 http://localhost:30800 即可訪問。
在頁面中選擇token模式登陸,然後填入上面步驟複製的token即可。