You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm搭建K8s 1.16.4集群,Prometheus缺失APIServiceRegistrationController指标

解决APIServiceRegistrationController指标缺失问题

我之前也碰到过类似的K8s控制器监控指标找不到的情况,结合你用kubeadm部署的1.16.4版本集群+kube-prometheus的场景,给你整理几个关键排查方向:

1. 先确认kube-controller-manager的metrics是否正常暴露

APIServiceRegistrationController是kube-controller-manager的核心控制器之一,它的指标由kube-controller-manager生成。在kubeadm默认部署的集群里,kube-controller-manager有时候会把metrics端点绑定在127.0.0.1,导致Prometheus抓不到:

  • 登录控制节点,打开/etc/kubernetes/manifests/kube-controller-manager.yaml文件,检查启动参数:
    要确保有--bind-address=0.0.0.0(允许集群内其他组件访问)和--metrics-bind-address=0.0.0.0:10252(明确暴露metrics端口)。如果原来的bind-address是127.0.0.1,修改后保存,kubelet会自动重启这个Pod。

2. 手动验证指标是否存在

改完配置后,找个集群内的Pod(比如直接进Prometheus Pod),用curl访问kube-controller-manager的metrics端点:

curl http://kube-controller-manager.kube-system.svc:10252/metrics | grep APIServiceRegistrationController

如果能搜到你要的那些指标,说明组件本身没问题,问题出在Prometheus的采集配置;如果搜不到,那就要检查kube-controller-manager的日志,看有没有指标生成相关的报错。

3. 检查kube-prometheus的采集规则

kube-prometheus默认应该会采集kube-controller-manager的指标,但可能因为版本适配或者配置缺失,没加上这个采集目标:

  • 先看看有没有对应的ServiceMonitor:
    kubectl get servicemonitors -n kube-prometheus
    
    如果找不到kube-controller-manager相关的ServiceMonitor,就手动创建一个,示例配置如下(注意要匹配你集群里的标签和TLS配置):
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: kube-controller-manager
      namespace: kube-prometheus
      labels:
        release: prometheus  # 要和你的Prometheus实例标签匹配
    spec:
      endpoints:
      - port: https-metrics
        scheme: https
        tlsConfig:
          insecureSkipVerify: true  # 集群默认自签证书,跳过验证
      selector:
        matchLabels:
          k8s-app: kube-controller-manager  # 匹配kube-controller-manager Service的标签
      namespaceSelector:
        matchNames:
        - kube-system
    

4. 注意版本兼容性问题

K8s 1.16.4是比较老的版本了(2019年的版本),而kube-prometheus的新版本可能不再适配这么旧的K8s。比如kube-prometheus v0.7.x系列是专门适配K8s 1.16-1.19的,如果你装的是v0.10及以上的版本,很可能会出现采集不兼容的情况,建议降级到对应版本的kube-prometheus。

5. 检查Prometheus的Target状态

最后,进Prometheus UI的Status -> Targets页面,看看kube-controller-manager这个target是不是处于UP状态。如果是DOWN,页面上会显示错误原因,比如连接超时、TLS认证失败,照着这些提示去排查网络或者证书问题就行。

如果以上步骤都试过还是找不到指标,可能需要确认一下K8s 1.16.4是否确实支持这些指标——理论上是支持的,这些控制器指标在更早的版本就已经上线了,所以大概率还是配置或者采集的问题。

内容的提问来源于stack exchange,提问作者hwdef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:22:32