阶段一:下载安装(以下命令只在master节点上进行)

yum  install  wget -y
[root@k8s-master-1 ~]# mkdir dashboard
[root@k8s-master-1 ~]# cd dashboard/
[root@k8s-master-1 dashboard]# 
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

[root@k8s-master-1 dashboard]# ls
recommended.yaml

探测集群具体版本

kubectl version
kubectl get nodes

探测包管理工具(Helm)状态

helm version

考虑到你的集群底层使用的是 containerd 容器运行时,并且我们刚刚才一起跨越了网络拉取外部镜像的难关,我会直接在接下来的专属方案中为你规划好国内镜像的替换与加速策略。这次咱们提前把坑填平,绝不让 Dashboard 再次卡在 ImagePullBackOff 上!

———————————————————————————————————————————

1. 暴露外网访问端口 (NodePort)

默认情况下,Dashboard 只能在集群内部访问。我们将它修改为 NodePort 模式,并固定使用 32000 端口:

# 将 type 修改为 NodePort 并添加 nodePort: 32000
sed -i '/targetPort: 8443/a\      nodePort: 32000\n  type: NodePort' recommended.yaml

2. 提前打好“防拉取失败”疫苗 (替换镜像源)

结合你之前成功拉取镜像的经验,我们直接将 Dashboard 和 Metrics Scraper 的镜像地址,替换为你之前使用过的华为云 SWR 加速镜像,一劳永逸

# 替换 Dashboard 镜像源
sed -i 's|kubernetesui/dashboard:|swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubernetesui/dashboard:|g' recommended.yaml
# 替换 Metrics Scraper 镜像源
sed -i 's|kubernetesui/metrics-scraper:|swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubernetesui/metrics-scraper:|g' recommended.yaml

阶段二:正式部署 Dashboard

改造完成后,直接一把梭哈,应用这个文件:

kubectl apply -f recommended.yaml

验证状态

[root@k8s-master-1 dashboard]# kubectl get pods -n kubernetes-dashboard -w
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-68bdf6bdb7-nzc6b   1/1     Running   0          29s
kubernetes-dashboard-6c878f5cb7-fr44r        1/1     Running   0          29s

阶段三:创建管理员账号 (获取登录钥匙)

Dashboard 安装好后是带有一把“锁”的。在 Kubernetes v1.24 及以上的版本中,默认不再自动生成无限期的 Secret Token。我们需要手动创建一个拥有最高权限的管理员账号(ServiceAccount)并生成 Token。

1. 创建最高权限账号 (直接复制整段执行):

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
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
EOF

2. 生成专属登录 Token

# 生成一个有效期为 24 小时的 Token
kubectl -n kubernetes-dashboard create token admin-user --duration=86400s

结果

[root@k8s-master-1 dashboard]# kubectl -n kubernetes-dashboard create token admin-user --duration=86400s
eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5hRS13aWlnMUhkVDVvV0NZRVQzMEY5VDg5aVoxUU04ZnFSQzBTbjZobncifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzcyODA0NjkyLCJpYXQiOjE3NzI3MTgyOTIsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiNmQ0ZGJmNWItMGVkYS00NjFhLWI1NWUtM2Q2NDVmNTMyNWYzIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiNWQ4MTlmODgtMWY4ZS00MDRhLWI4ZjUtZmMyZmU0ZGQ4OTUyIn19LCJuYmYiOjE3NzI3MTgyOTIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.sfKZYCYzm8rMIVnMnSebIRUCWDtUWYgjVR9EIi4ZZ70aZU9hxF6CS2mwx520ESHBH9bXOidTfQvZ9RIP74jj1INcAxzUJJ-YOWam0rGTlHeTAeGYD_4QV5hCHwO-xoqm23nd7T5tTY1-qkUGOjS5MY4uEw4SGnEf5ZRkYLQx-pIJMcZckCnXUTUN44os_rLIMK08QU1rhFeSiOHde-7LMNmA5o2ajTuMyPPtl0KIy9S2-ozZ_JNu-6_i_GaS5Wg1nSVU1GtcObPuhW6kR2V2dPE1Dy608iPAwN76FrxZSGqgHv3zdXEKz9JUN0HXc5wbXZ2O5yHzCbndyBNpANwddg

https://<你任意一个节点的物理IP>:32000

你任意一个节点的物理IP:是k8s集群上的任意一个IP

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐