metrics-server组件是离线监控数据组件,提供查看集群离线监控数据功能。ack-arms-prometheus组件是阿里云Prometheus监控在ACK集群中的监控组件。本文介绍以上两个组件使用过程中的常见问题。

类型问题
metrics-server组件常见问题
ack-arms-prometheus组件常见问题

kubectl top pod/node全部无数据

请按照以下方式进行预检查。

  1. 执行以下命令,检查metrics-server的API Service是否正常。
    kubectl get apiservices
    metris

    返回结果中v1beta1.metrics.k8s.io显示True,说明metrics-server的API Service是正常的。

  2. 可选:如果metrics-server的API Service不正常,在metrics-server所在的Node节点上执行以下命令,检查metrics-server的443端口与8082端口是否可以在集群中正常访问。
    curl -v 127.0.0.1:8082/apis/metrics/v1alpha1/nodes

    执行以上命令,能正常返回数据,说明metrics-server的443端口与8082端口可以在集群中正常访问。

  3. 可选:如果metrics-server的443端口与8082端口无法在集群中正常访问,重启metrics-server。
    您可以通过删除metrics-server的Pod的方式重启metrics-server。
    1. 登录容器服务管理控制台,在左侧导航栏中选择集群
    2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择工作负载 > 无状态
    3. 无状态页面顶部设置命名空间为kube-system,单击metrics-server。
    4. 容器组页签下选择metrics-server的Pod操作列下的更多 > 删除
    5. 提示对话框单击确定

按上述说明检查后,没有发现问题,请按照以下工单模板提交工单

工单模板
  1. API Service是否正常?

  2. metrics-server 443与8082端口是否可达?

  3. 提供集群ID。

kubectl top pod/node部分无数据

请按照以下方式进行预检查。
  • 检查是特定的Node上所有Pod无数据,还是特定的Pod无数据。如果是特定的Node上所有Pod无数据,请检查节点是否存在时区漂移,可以通过NTP服务器的date命令进行时区校验。
  • 检查metrics-server Pod到特定的Node的10255端口的网络连通性。

按上述说明检查后,没有发现问题。请按照以下工单模板提交工单

工单模板
  1. 单个Node上的Pod是否全部无数据?

  2. 节点时区是否有漂移?

  3. metrics-server到指定节点的连通性是否可达?

HPA无法获取metrics数据

请按照以下方式进行预检查。

检查对应的Pod执行kubectl top pod pod-id的结果。如果数据异常,请参考上述kubectl top pod/node部分无数据和kubectl top pod/node全部无数据的检查方法进行检查。

按上述说明检查后,没有发现问题。请按照以下工单模板提交工单

工单模板
  1. 监控数据是否有异常?

  2. 执行kubectl describe hpa hpa-name,提交元数据信息。

滚动发布时HPA额外弹出多余的Pod

请按照以下方式进行预检查。

检查metrics-server是否升级到了最新的版本。如果版本没有问题,在kube-system命名空间下的metrics-server配置启动参数。
--metric-resolution=15s
--enable-hpa-rolling-update-skipped=true

按上述说明检查后,没有发现问题。请按照以下工单模板提交工单

工单模板
  1. 检查metrics-server的版本是否为最新?

  2. 检查配置参数是否已经增加防误弹能力?

  3. 执行kubectl describe hpa hpa-name,提交HPA的描述。

提示Component Not Installed后继续安装ack-arms-prometheus组件,安装失败

  • 检查是否已经安装ack-arms-prometheus组件。
    1. 登录容器服务管理控制台,在左侧导航栏中单击集群
    2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    3. 在集群管理页面左侧导航栏选择应用 > Helm

      Helm页面检查是否已有ack-arms-prometheus。

      • Helm页面已有ack-arms-prometheus,您需要进行以下操作:

        您需要在Helm页面删除ack-arms-prometheus,并在组件管理页面重新安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件

      • Helm页面没有ack-arms-prometheus,您需要进行以下操作:
        1. 若没有ack-arms-prometheus,说明删除ack-arms-prometheus helm有资源残留,需要手动清理。关于删除ack-arms-prometheus残留资源的具体操作,请参见阿里云Prometheus监控常见问题
        2. 组件管理页面安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件
        3. 执行以上步骤,仍无法安装ack-arms-prometheus,请提交工单
  • 检查ack-arms-prometheus的日志是否有报错。
    1. 登录容器服务管理控制台,在左侧导航栏中单击集群
    2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择工作负载 > 无状态
    3. 无状态页面顶部设置命名空间arms-prom,然后单击arms-prometheus-ack-arms-prometheus。
    4. 单击日志页签,查看日志中是否有报错。

      若日志中出现报错,请提交工单

  • 检查Agent是否安装报错。
    1. 登录ARMS控制台
    2. 在顶部菜单栏,选择地域。
    3. 在控制台左侧导航栏单击Prometheus监控
    4. Prometheus监控页面,单击K8s集群名称。
    5. 在左侧导航栏单击设置,在右侧页面单击设置页签。

      设置页签下可以查看健康检查结果。若有报错,请提交工单

安装ack-arms-prometheus组件时报错xxx in use

  1. 登录容器服务管理控制台,在左侧导航栏中单击集群
  2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  3. 在集群管理页面左侧导航栏选择应用 > Helm
    Helm页面检查是否已有ack-arms-prometheus。
    • Helm页面已有ack-arms-prometheus,您需要进行以下操作:

      您需要在Helm页面删除ack-arms-prometheus,并在组件管理页面重新安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件

    • Helm页面没有ack-arms-prometheus,您需要进行以下操作:
      1. 若没有ack-arms-prometheus,说明删除ack-arms-prometheus helm有资源残留,需要手动清理。关于删除ack-arms-prometheus残留资源的具体操作,请参见阿里云Prometheus监控常见问题
      2. 组件管理页面安装ack-arms-prometheus。关于安装ack-arms-prometheus的具体操作,请参见管理组件
      3. 执行以上步骤,仍无法安装ack-arms-prometheus,请提交工单