本文介绍如何查看Pro版集群的控制平面组件监控大盘及组件访问的最佳实践。

前提条件

  • 控制平面组件监控功能,适用于ACK Pro版集群,且集群版本不低于1.16。
  • 已开通ARMS。具体操作,请参见开通ARMS
  • 已安装ack-arms-prometheus组件。具体操作,请参见管理组件

查看控制平面组件监控大盘

  1. 登录容器服务管理控制台,在左侧导航栏中选择集群
  2. 集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择运维管理 > Prometheus监控
  3. Prometheus监控页面中,单击Pro核心组件监控
    ps
    • 在该页签下可查看ACK Pro APIServerACK Pro Cloud Controller ManagerACK Pro ETCDACK Pro Kube Controller ManagerACK Pro Scheduler监控大盘。
    • 若在该页签下无法看到ACK Pro集群控制平面组件监控大盘,需要您按照以下操作重置ARMS大盘。
      1. Prometheus监控页面中,单击页面右上角的跳转到Prometheus服务,跳转到ARMS的大盘列表页面。
      2. 大盘列表页面中,单击页面右上角的大盘重置,然后在弹出的对话框中单击重置
      3. 待大盘重置完成后,在Pro核心组件监控页签下即可看到控制平面组件的监控大盘。

控制平面组件访问最佳实践

您在访问集群控制平面组件时,建议遵循以下最佳实践原则,尤其在大规模集群(节点规模大于100,Kubernentes资源量较大)的场景下,可以提升集群整体稳定性。

  • 尽量使用Informer、Lister方式从APIServer读取数据,对APIServer和etcd综合压力小。
  • 如果必须要使用全量LIST,建议请求增加resourceVersion=0,从APIServer Cache中读取数据,避免一次请求访问全量击穿到etcd,如果确实需要从etcd读取数据,需要基于Limit使用分页访问。
  • API序列化协议使用Protobuf,相比于JSON更节省内存和传输流量。更多信息,请参见Alternate representations of resources。代码样例如下:
    kubeConfig, err := clientcmd.BuildConfigFromFlags(s.Master, s.Kubeconfig)
    if err != nil {
        return nil, err
    }
    kubeConfig.AcceptContentTypes = strings.Join([]string{runtime.ContentTypeProtobuf, runtime.ContentTypeJSON}, ",")
    kubeConfig.ContentType = runtime.ContentTypeProtobuf
    client, err := clientset.NewForConfig(restclient.AddUserAgent(kubeConfig, "content-type-example"))
    ...
  • 及时清理不使用的Kubernetes资源,例如ConfigMap、Secret和PVC等。避免出现超过1000的Pending Pod,因为大量Pending Pod会对kube-apsierver、kube-controller-manager和kube-scheduler持续产生压力。
  • 注意关注控制平面组件使用情况,尤其是CPU和内存利用率指标,避免持续高水位导致组件OOM等异常。如果出现持续高水位,建议通过清理无效资源、优化客户端行为、拆分集群业务等措施,保证集群处于合理水位。
  • 部分开源组件对控制平面压力较大,官方输出了相应的优化治理方案,建议关注并应用到实践。以Argo workflow为例,官方推出的Kube API过量访问的优化方案建议使用Argo时,需开启相关配置。更多信息,请参见Running At Massive Scale

相关文档

控制平面组件 监控大盘 描述 参考文档
kube-apiserver ACK Pro APIServer 介绍kube-apiserver组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 kube-apiserver组件监控
cloud-controller-manager ACK Pro Cloud Controller Manager 介绍cloud-controller-mananger组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 cloud-controller-mananger组件监控
etcd ACK Pro ETCD 介绍etcd组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 etcd组件监控
kube-controller-manager ACK Pro Kube Controller Manager 介绍kube-controller-manager组件的指标清单和对应大盘的使用指导。 kube-controller-manager组件监控
kube-scheduler ACK Pro Scheduler 介绍kube-scheduler组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 kube-scheduler组件监控
自定义Prometheus监控和告警 自定义大盘名称 介绍如何基于用户自建的Prometheus,采集ACK Pro集群的控制面组件监控API Server、etcd、Scheduler、KCM、CCM指标配置说明以及推荐的报警配置。 自定义Prometheus监控和告警