本文介紹如何查看ACK集群Pro版的控制面組件監控大盤及組件訪問的最佳實踐。
前提條件
查看控制面組件監控大盤
控制面組件訪問最佳實踐
您在訪問集群控制面組件時,建議遵循以下最佳實踐原則,尤其在大規模集群(節點規模大于100,Kubernetes資源量較大)的場景下,可以提升集群整體穩定性。
盡量使用Informer、Lister方式從API Server讀取數據,對API Server和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組件的指標清單、對應大盤的使用指導以及常見指標異常的問題解析。 | |
cloud-controller-manager | ACK Pro Cloud Controller Manager | 介紹cloud-controller-mananger組件的指標清單、對應大盤的使用指導以及常見指標異常的問題解析。 | |
etcd | ACK Pro ETCD | 介紹etcd組件的指標清單、對應大盤的使用指導以及常見指標異常的問題解析。 | |
kube-controller-manager | ACK Pro Kube Controller Manager | 介紹kube-controller-manager組件的指標清單和對應大盤的使用指導。 | |
kube-scheduler | ACK Pro Scheduler | 介紹kube-scheduler組件的指標清單、對應大盤的使用指導以及常見指標異常的問題解析。 | |
自定義Prometheus監控和告警 | 自定義大盤名稱 | 介紹如何基于用戶自建的Prometheus,采集ACK Pro集群的控制面組件監控API Server、etcd、Scheduler、KCM、CCM指標配置說明以及推薦的報警配置。 |