本文介紹如何查看ACK叢集Pro版的控制面組件監控大盤及組件訪問的最佳實務。
前提條件
查看控制面組件監控大盤
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Prometheus監控頁面中,單擊核心組件監控。
在該頁簽下可查看ACK Pro API server、ACK Pro ETCD、ACK Pro Scheduler、ACK Pro Cloud Controller Manager和ACK Pro Kube Controller Manager監控大盤。
說明如果需要升級最新的專業Prometheus監控大盤,請在ACK組件管理中升級ack-arms-prometheus組件版本至最新。具體操作,請參見管理組件。
控制面組件訪問最佳實務
您在訪問叢集控制面組件時,建議遵循以下最佳實務原則,尤其在大規模叢集(節點規模大於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指標配置說明以及推薦的警示配置。 |