配置Kubernetes Cluster-AutoScaler时遇权限禁止错误求助
Cluster Autoscaler权限不足错误的原因与解决方案
错误原因
日志中的所有报错都指向同一个问题:kube-system命名空间下的cluster-autoscaler服务账号缺少集群级别的资源访问权限,具体无法执行list和watch操作的资源包括:
csidrivers.storage.k8s.io(storage.k8s.io API组)csistoragecapacities.storage.k8s.io(storage.k8s.io API组)namespaces(核心API组)
Cluster Autoscaler需要这些权限监听集群资源状态,才能做出正确的扩缩容决策。
解决方案
通过RBAC配置为该服务账号添加所需权限,步骤如下:
- 创建自定义ClusterRole,包含所需资源的访问权限
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: cluster-autoscaler-custom rules: - apiGroups: ["storage.k8s.io"] resources: ["csidrivers", "csistoragecapacities"] verbs: ["list", "watch"] - apiGroups: [""] resources: ["namespaces"] verbs: ["list", "watch"]
执行命令应用配置:
kubectl apply -f cluster-autoscaler-custom-role.yaml
- 将ClusterRole绑定到
cluster-autoscaler服务账号
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-autoscaler-custom-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-autoscaler-custom subjects: - kind: ServiceAccount name: cluster-autoscaler namespace: kube-system
执行命令应用配置:
kubectl apply -f cluster-autoscaler-custom-binding.yaml
- 重启Cluster Autoscaler Pod,让新权限生效
kubectl rollout restart deployment cluster-autoscaler -n kube-system
补充说明
如果你的Cluster Autoscaler是通过官方部署文件安装的,也可以直接检查并修改官方提供的cluster-autoscaler ClusterRole,在其rules中添加上述资源的权限,无需创建自定义角色。
内容的提问来源于stack exchange,提问作者Steve Spiteri
相关产品推荐
相关产品推荐

