如何获取Kubernetes Controller Manager指标?kubeadm集群遇403权限问题
解决Kubernetes Controller Manager指标403权限错误的方法
针对kubeadm部署的集群,出现system:anonymous用户无法访问/metrics的403错误,可通过以下两种方式解决:
方法一:临时认证访问(无需修改集群配置)
适合临时调试场景,利用集群的认证凭据访问:
- 方式1:通过kubectl proxy转发
先启动kubectl代理:
另开终端执行curl访问:kubectl proxy --port=8080curl http://localhost:8080/api/v1/namespaces/kube-system/services/kube-controller-manager:https/proxy/metrics - 方式2:直接使用集群证书访问
利用kubeadm生成的客户端证书进行认证:curl -k --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt --key /etc/kubernetes/pki/apiserver-kubelet-client.key https://localhost:10257/metrics
方法二:修改Controller Manager配置允许匿名访问(长期适用)
如果需要长期开放metrics供监控系统采集,可修改Controller Manager的静态Pod配置:
- 编辑静态Pod配置文件:
vi /etc/kubernetes/manifests/kube-controller-manager.yaml - 在
spec.containers[0].command列表中添加或修改参数:
添加--anonymous-auth=true(若已有该参数且值为false,改为true) - 保存文件后,kubelet会自动重启Controller Manager Pod,等待约1分钟后,执行原命令即可获取指标:
curl -k https://localhost:10257/metrics
注意:开放匿名访问会降低安全性,若集群处于生产环境,建议优先使用方法一的认证方式,或配置RBAC权限允许特定用户访问metrics端点。
内容的提问来源于stack exchange,提问作者Ren
相关产品推荐
相关产品推荐

