在Kubernetes集群中配置和使用Dashboard进行管理的核心步骤与实践经验如下:
-
Dashboard安装与版本适配
- 通过
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
部署官方Dashboard,需注意K8s版本与Dashboard版本矩阵(例如v1.24+集群需用Dashboard v2.7.0+)。实践中曾因版本不匹配导致Metrics不可见。
- 通过
-
访问控制与网络暴露
- 修改Service为NodePort类型:
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
,或通过Ingress+OAuth2代理实现安全暴露。曾遇到浏览器跨域限制,需通过kubectl proxy
本地代理解决。
- 修改Service为NodePort类型:
-
RBAC权限精细化配置
- 创建最小权限ServiceAccount示例:
apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-admin-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view # 根据实际需求替换为edit等角色 subjects:
- kind: ServiceAccount
name: dashboard-admin
namespace: kubernetes-dashboard
曾因误用cluster-admin角色导致安全风险,后改为定制ClusterRole。
- 创建最小权限ServiceAccount示例:
-
认证方式实践
- Token认证:通过
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
获取Bearer Token - Kubeconfig认证需确保用户证书包含CN和O字段匹配RBAC规则
- Token认证:通过
典型挑战与解决方案:
- Metrics数据缺失:需部署metrics-server且验证APIService资源状态,曾因证书配置错误导致Heapster数据无法采集
- 403 Forbidden错误:检查Pod Security Policies(PSP)是否限制Dashboard Pod执行,曾因缺省PSP阻止镜像拉取
- OIDC集成难题:在混合云场景下,需配置--oidc-*参数并确保Ingress annotations正确传递JWT token
- 持久化配置失效:Dashboard Deployment需添加
--token-ttl=0
参数禁用token自动过期,避免频繁重新登录
安全建议:通过NetworkPolicy限制Dashboard访问源IP,结合Audit Logging记录管理操作,生产环境推荐禁用Dashboard直接暴露,改用Kubectl Proxy临时访问。