部署 Dashboard UI¶
默认情况下不会部署 Dashboard。可以通过以下命令部署:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
# 端口 export
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
# 修改 => Type : `NodePort`
# 檢查開放端口,使用外往連接
[root@master k8s]# kubectl get svc -A | grep kubernetes-dashboard
kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.96.144.115 <none> 8000/TCP 45m
kubernetes-dashboard kubernetes-dashboard NodePort 10.96.243.112 <none> 443:30712/TCP 45m

建立 role¶
因為 Kubernetes 預設就幫我們建立了 cluster-admin 這個 role, 所以我們就不用再自己另外建立, 直接使用即可
建立 dashboard-user.yaml 檔
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cluster-admin-binding
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
# 這邊我們並沒有特別建立這個 cluster role, 因為這是 Kubernetes 預設建立的
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: cluster-admin-tommy
namespace: kube-system
kubectl create -f dashboard-user.yaml
取得 Server Account 的 token¶
上面已經完成綁定, 接下來我們便要取得 service account 的 token 首先, 我們先來看看 service account
# 建立 service account
# 那我們就建立一個 service account, 名為 cluster-admin-tommy
[root@master k8s]# kubectl create sa cluster-admin-tommy -n kube-system
serviceaccount/cluster-admin-tommy created
# get token
[root@master k8s]# kubectl get sa cluster-admin-tommy -n kube-system -o=yaml
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2021-12-08T12:58:18Z"
name: cluster-admin-tommy
namespace: kube-system
resourceVersion: "10482"
uid: 207c0bd4-5f9b-4d13-b4df-b5b0c16d5835
secrets:
- name: cluster-admin-tommy-token-4rnb4
[root@master k8s]#
##################
[root@master k8s]# kubectl get secret cluster-admin-tommy-token-4rnb4 -o jsonpath={.data.token} -n kube-system | base64 -d
eyJhbGciOiJSUzI1NiIsImtpZCI6IjJrbXNINTBwemtVQmI4UDRFaWY4R3hMc0NHLTltSTZhNE5sWFpmWXp2eVkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjbHVzdGVyLWFkbWluLXRvbW15LXRva2VuLTRybmI0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNsdXN0ZXItYWRtaW4tdG9tbXkiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyMDdjMGJkNC01ZjliLTRkMTMtYjRkZi1iNWIwYzE2ZDU4MzUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06Y2x1c3Rlci1hZG1pbi10b21teSJ9.Ub344dEjc8K270MrNlkNWlnj5XZrr2Rb8mbrt8-G-_2d3QPtx9FTCVtb7FoEDdxFuMMTzatmmiGiuOjX4m1u7HMgjHqNIBW3MOS777vysTJ6jlgHa0fQE0vu6XNfh5P_enCysQ0EUCeEQrGGBFvGvxdRg4IHaK4UPy7XKUxu6HHb6KWiCXroMIH5EV1ymAqUmoeBOQLRAmcOdsc4w4VOv91xQycMA5xIC6XUiMlSi6C8Nyvnam1Llyllr4iV2Ws8tzFoMnfU56dKE_JaAHMs59O_j-PpyDx-ToXf67whevY4GDufyBdjDKIuyZkXl4I7O1xqqJjQeJPkJLGbR1XH7w
