在test命名空间部署Kubernetes Dashboard v1.8.3遇权限报错求助
解决Kubernetes Dashboard v1.8.3跨命名空间部署的权限报错问题
这个问题我之前帮同事排查过,本质是v1.8.3版本的Dashboard代码里硬编码了kube-system命名空间——它会默认尝试把加密密钥用的kubernetes-dashboard-key-holder Secret创建在kube-system下,哪怕你把所有Dashboard资源都部署到了test命名空间,这个逻辑也不会自动跟着改,所以才会触发跨命名空间的权限拒绝错误。
下面给你两个可行的解决方案,按需选择:
方案一:给Dashboard服务账号授权kube-system的Secret操作权限
直接给test命名空间下的dashboard服务账号添加在kube-system里创建、管理指定Secret的权限,这样它就能正常完成密钥存储了。
方式1:快速授权(用现成的edit角色)
执行这条命令,直接绑定权限:
kubectl create rolebinding dashboard-kube-system-secret-access --clusterrole=edit --serviceaccount=test:dashboard --namespace=kube-system
方式2:精细化权限(更安全)
如果你不想给太宽泛的权限,可以创建一个仅允许操作kubernetes-dashboard-key-holder Secret的角色,然后绑定:
创建一个dashboard-secret-rbac.yaml文件,内容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: dashboard-kube-system-secret-manager rules: - apiGroups: [""] resources: ["secrets"] verbs: ["create", "get", "update", "delete"] resourceNames: ["kubernetes-dashboard-key-holder"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: dashboard-kube-system-secret-binding namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: dashboard-kube-system-secret-manager subjects: - kind: ServiceAccount name: dashboard namespace: test
然后应用这个配置:
kubectl apply -f dashboard-secret-rbac.yaml
方案二:修改Dashboard启动参数,指定密钥存储的命名空间
另一种更彻底的办法是让Dashboard把密钥存在test命名空间里,不需要跨权限。你只需要修改Deployment的启动命令,添加一个参数指定密钥的命名空间:
- 编辑
test命名空间下的Dashboard Deployment:
kubectl edit deployment kubernetes-dashboard -n test
- 找到
spec.template.spec.containers[0].command部分,添加--secret-namespace=test参数,修改后类似这样:
spec: template: spec: containers: - name: kubernetes-dashboard image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3 command: - /dashboard - --secret-namespace=test # 新增这一行 # 其他原有参数保持不变
- 保存退出后,Kubernetes会自动重建Pod,新的Pod就会在
test命名空间创建和使用kubernetes-dashboard-key-holderSecret,不会再访问kube-system了。
验证解决方案
不管选哪个方案,最后都可以通过以下命令验证:
- 检查Pod是否正常运行:
kubectl get pods -n test
- 检查对应的Secret是否创建成功:
kubectl get secrets -n test | grep kubernetes-dashboard-key-holder
内容的提问来源于stack exchange,提问作者user1578872
相关产品推荐
相关产品推荐

