kubeadm部署Kubernetes集群时Prometheus无法抓取控制平面指标如何解决
kubeadm集群控制平面指标暴露持久化解决方案
kubeadm官方支持通过ClusterConfiguration自定义控制平面组件参数,配置会被持久化保存,集群升级时不会被覆盖,具体操作步骤如下:
1. 导出当前集群的ClusterConfiguration
执行以下命令导出集群现存的kubeadm配置到本地文件:
kubectl get cm kubeadm-config -n kube-system -o jsonpath='{.data.ClusterConfiguration}' > kubeadm-config.yaml
2. 编辑配置文件添加组件自定义参数
打开导出的kubeadm-config.yaml文件,在对应字段下添加监听地址配置:
- 针对kube-scheduler添加:
scheduler: extraArgs: bind-address: 0.0.0.0 - 针对kube-controller-manager添加:
controllerManager: extraArgs: bind-address: 0.0.0.0 - 针对etcd添加:
etcd: local: extraArgs: listen-metrics-urls: http://0.0.0.0:2381
注意:如果配置文件中已经存在对应组件的配置块,只需在
extraArgs下新增参数即可,不要重复定义组件配置块。
3. 应用配置到集群
执行以下命令应用修改后的配置,kubeadm会自动重建控制平面静态Pod使配置生效:
kubeadm upgrade apply --config kubeadm-config.yaml -y
如果是多控制平面高可用集群,在主控制节点执行完上述命令后,需要在其余所有控制平面节点依次执行kubeadm upgrade node同步配置。
4. 验证配置生效
配置生效后可执行以下命令验证参数是否正确加载:
- 验证kube-scheduler:
ps aux | grep kube-scheduler | grep "bind-address=0.0.0.0" - 验证kube-controller-manager:
ps aux | grep kube-controller-manager | grep "bind-address=0.0.0.0" - 验证etcd:
ps aux | grep etcd | grep "listen-metrics-urls=http://0.0.0.0:2381"
确认参数加载正常后,查看Prometheus的抓取目标状态,三个组件的指标抓取会恢复正常,后续集群升级时配置不会被重置。
内容的提问来源于stack exchange,提问作者Krist van Besien
相关产品推荐
相关产品推荐

