首先,用kubectl apply -f官方提供的dashboard.yaml安装。然后创建个有权限的ServiceAccount,用kubectl get secret拿登录token。启动kubectl proxy后浏览器访问localhost:8001就能看到界面,记得选Token登录方式。生产环境建议配好RBAC权限和HT证书,别裸奔哈!
如何在Kubernetes(k8s)集群中配置和使用Kubernetes Dashboard进行管理?
在Kubernetes集群中配置和使用Dashboard进行管理,需遵循以下步骤及注意事项:
-
安装Dashboard
- 使用官方YAML部署:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
- 注意版本兼容性,建议选择与集群版本匹配的Dashboard版本。
- 使用官方YAML部署:
-
访问方式
- 本地代理:
kubectl proxy
后通过http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
访问。 - NodePort/Ingress暴露:生产环境建议结合HTTPS及访问控制,避免直接暴露。
- 本地代理:
-
权限配置(RBAC)
- 创建ServiceAccount(如dashboard-admin)及绑定ClusterRole(cluster-admin),示例YAML:
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: cluster-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kubernetes-dashboard
- 最小权限原则:根据团队职责细化角色,避免过度授权。
- 创建ServiceAccount(如dashboard-admin)及绑定ClusterRole(cluster-admin),示例YAML:
-
登录认证
- Token方式:通过
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-admin | awk '{print $1}')
获取Token。 - Kubeconfig:可配置文件直连,适合自动化场景。
- Token方式:通过
-
安全建议
- 启用集群内网络策略,限制Dashboard的入口流量。
- 定期审计访问日志,排查异常登录。
- 生产环境避免长期保留默认服务端口开放。
实践经验表明,Dashboard适合可视化查看资源状态,但复杂操作仍建议结合kubectl或CI/CD工具。部署后需定期更新版本以修复安全漏洞。
在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临时访问。
在Kubernetes集群中配置Dashboard,需执行以下步骤:1. 使用kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
部署Dashboard;2. 创建ServiceAccount及RBAC权限;3. 通过kubectl proxy
或NodePort暴露服务;4. 使用Token或Kubeconfig登录。
延伸知识点:ServiceAccount与RBAC配置。ServiceAccount用于Pod或用户与API Server的认证,RBAC(基于角色的访问控制)则通过Role/RoleBinding(命名空间级别)或ClusterRole/ClusterRoleBinding(集群级别)定义权限。例如,创建Dashboard管理员账户需:1. 定义ServiceAccount kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
;2. 绑定ClusterRole kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
;3. 获取Token kubectl describe secret -n kubernetes-dashboard $(kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin | awk '{print $1}')
,输出中的Token用于Dashboard身份验证。