1. 部署 Kubernetes Dashboard

1.1 获取安装文件

从官方仓库获取最新的安装 YAML 文件(以 v2.7.0 为例):

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

2. 配置访问方式

2.1 暴露 Dashboard 服务

默认情况下,Dashboard 服务是 ClusterIP 类型,需将其暴露为 NodePort 或通过 Ingress 访问:

# 修改 dashboard-service.yaml 中的 service 类型为 NodePort
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort  # 修改为 NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001  # 可选:指定端口
  selector:
    k8s-app: kubernetes-dashboard

应用修改:

kubectl apply -f dashboard-service.yaml

2.2 获取访问地址

获取节点 IP 和端口:

kubectl get svc -n kubernetes-dashboard

示例输出:

NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   NodePort   10.96.123.123   <none>        443:30001/TCP  5m

访问地址:

https://<节点IP>:30001

3. 生成访问 Token

3.1 创建 ServiceAccount 和 ClusterRoleBinding

创建 admin-user 的 YAML 文件:

# admin-user.yaml
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

应用配置:

kubectl apply -f admin-user.yaml

3.2 生成 Token

获取 Token:

kubectl -n kubernetes-dashboard create token admin-user

或通过 Base64 解码旧方式(适用于旧版本):

kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d

4. 调整 Token 有效期

4.1 修改 Dashboard Deployment

编辑 Dashboard 的 Deployment 配置:

kubectl edit deployments -n kubernetes-dashboard kubernetes-dashboard

args 中添加 --token-ttl=43200(单位:秒,43200 = 12 小时):

spec:
  containers:
    - args:
        - --token-ttl=43200
        #禁用 Token 过期,Token 永久有效
        #- --token-ttl=0

保存并退出,系统会自动重启 Pod。 Kubernetes Dashboard