K8S 集群環境: Ubuntu 24 / K8S 1.28.2
1. 推薦使用helm 安裝Kubernetes Dashboard
sudo snap install helm --classic
2. 部署Kubernetes Dashboard
# Add kubernetes-dashboard repository
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
# Deploy a Helm Release named "kubernetes-dashboard" using the kubernetes-dashboard chart
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard
3. 查看Pod 啟動狀態,如果pending狀態,查看events確認是否鏡像拉取問題,可手動拉取kong:3.8
kubectl --namespace=kubernetes-dashboard get pods
ctr i pull --all-platforms xxxxx.xuanyuan.dev/bitnami/kong:3.8
再次確認Pod 啟動狀態
root@k8s-master:~/manifects# kubectl --namespace=kubernetes-dashboard get pods
NAME READY STATUS RESTARTS AGE
kubernetes-dashboard-api-5d7fbc9746-h2ssw 1/1 Running 0 68m
kubernetes-dashboard-auth-7896497d46-9mjc7 1/1 Running 0 68m
kubernetes-dashboard-kong-6bf7cb4d8c-htl4z 1/1 Running 0 68m
kubernetes-dashboard-metrics-scraper-79ddb8cd78-4dg6f 1/1 Running 0 68m
kubernetes-dashboard-web-5c84bb867f-twl9t 1/1 Running 0 68m
4. 查看kong proxy Service 端口
root@k8s-master:~/manifects# kubectl --namespace=kubernetes-dashboard get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard kubernetes-dashboard-api ClusterIP 10.97.5.78 <none> 8000/TCP 50m
kubernetes-dashboard kubernetes-dashboard-auth ClusterIP 10.107.21.211 <none> 8000/TCP 50m
kubernetes-dashboard kubernetes-dashboard-kong-proxy ClusterIP 10.98.134.37 <none> 443/TCP 50m
kubernetes-dashboard kubernetes-dashboard-metrics-scraper ClusterIP 10.110.95.33 <none> 8000/TCP 50m
kubernetes-dashboard kubernetes-dashboard-web ClusterIP 10.97.129.119 <none> 8000/TCP 50m
默認為ClusterIP,? 需手動更新為NodePort 以便節點外部訪問
kubectl --namespace=kubernetes-dashboard edit service kubernetes-dashboard-kong-proxy
5. 再次查看service,已經更改為NodePort
root@k8s-master:~/manifects# kubectl --namespace=kubernetes-dashboard get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard-api ClusterIP 10.97.5.78 <none> 8000/TCP 72m
kubernetes-dashboard-auth ClusterIP 10.107.21.211 <none> 8000/TCP 72m
kubernetes-dashboard-kong-proxy NodePort 10.98.134.37 <none> 443:30118/TCP 72m
kubernetes-dashboard-metrics-scraper ClusterIP 10.110.95.33 <none> 8000/TCP 72m
kubernetes-dashboard-web ClusterIP 10.97.129.119 <none> 8000/TCP 72m
6. 創建User 和Role
vim k8s-dashboard-sa.yamlkubectl apply -f k8s-dashboard-sa.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
7. 獲取token
root@k8s-master:~/manifects# kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6Ikx4eVpYWWpUcXBna28zS3AtcWozaUZZUU1GbW42QWNiN1lXM1Y0ZllTX2MifQ.
8. 用上一步獲取的token進行登錄