ACK叢集支援叢集升級檢查、叢集遷移檢查、組件檢查和節點池檢查。您可以在叢集升級、遷移等操作前執行叢集檢查,確認叢集是否符合要求,並擷取異常檢查項對應的修複方案。
叢集檢查項
叢集升級檢查
由於Kubernetes的複雜性,叢集升級存在較高風險。為保障平穩升級,ACK引入了叢集升級前置檢查。只有檢查通過後才可以進行叢集升級。不同叢集類型、Kubernetes版本及容器運行時的檢查項不同,請以控制台實際檢查項為準。
叢集升級檢查包含以下三類:
叢集資源:檢查ACK叢集相關的雲資源,例如SLB、ECS、VPC等。
叢集組件:檢查ACK叢集配置、組件配置及應用配置,例如組件版本是否滿足要求、應用是否使用廢棄API等。
叢集配置:檢查ACK叢集節點的相關配置。該檢查需要在節點上建立Pod用於收集資訊。
類別 | 檢查項 | 描述 |
叢集資源 | API Server SLB | SLB執行個體是否存在。 |
SLB執行個體狀態是否正常。 | ||
SLB監聽(連接埠及協議)配置是否正常。 | ||
SLB執行個體後端伺服器組配置是否正常。 | ||
SLB存取控制配置是否正確,若不存在,則直接通過。 | ||
VPC | VPC執行個體是否存在。 | |
VPC執行個體是否正常。 | ||
vSwitch | 交換器是否存在。 | |
交換器是否正常。 | ||
交換器的可用IP數量大於等於2。 | ||
ECS | ECS執行個體是否存在。 | |
ECS執行個體是否正常。 | ||
ECS安全性群組是否正常。 | ||
ECS服務期是否正常。 | ||
ECS執行個體類型是否符合要求。 | ||
雲助手用戶端是否正常。 | ||
叢集組件 | Kube Proxy Master | 組件是否存在。 |
Kube Proxy Worker | 組件是否存在。 | |
API Service | 是否存在停用API Service。 | |
叢集執行個體 | 叢集Master數量是否為3或5。 | |
叢集組件 | Terway組件版本是否符合要求。 | |
CoreDNS組件版本是否符合要求。 | ||
cloud-controller-manager組件版本是否符合要求。 | ||
Nginx Ingress Controller組件版本是否符合要求。 | ||
ACK Virtual Node組件版本是否符合要求。 | ||
Metrics Server組件版本是否符合要求。 | ||
節點 | 節點IP是否存在。 | |
節點是否可調度。 | ||
節點是否Ready。 | ||
節點作業系統是否支援升級。 | ||
節點可用Pod數量是否大於2。 | ||
廢棄API | 叢集中是否使用已廢棄的API。 | |
叢集配置 | iptables配置 | iptables配置是否正常。 |
作業系統 | 作業系統是否支援升級。 | |
yum | yum是否正常。 | |
磁碟 | 節點檔案系統是否正常。 | |
是否有超過5%的節點剩餘磁碟空間。 | ||
Swap | 節點是否開啟Swap。 | |
NTP | 節點NTP是否正常。 | |
Systemd | 節點Systemd版本是否大於systemd-219-67。 | |
kubelet | kubelet配置是否符合預期。 | |
容器運行時 | Docker運行時或containerd運行時是否正常。 | |
核心配置 | 節點核心配置是否正常。 | |
Manifest配置 | Manifest檔案是否符合預期。 |
叢集遷移檢查
叢集遷移前會觸發遷移前置檢查,僅當遷移檢查通過後才能進行叢集遷移。適用於以下情境。
從ACK專有叢集遷移至ACK託管叢集Pro版。
從ACK託管叢集基礎版遷移至ACK託管叢集。
叢集遷移檢查包含以下四類:
叢集資源:檢查ACK叢集相關的雲資源,例如SLB、ECS、VPC等。
叢集組件:檢查ACK叢集中組件配置,例如是否存在停用API Service等。
叢集配置:檢查ACK叢集節點的相關配置。該檢查需要在節點上建立Pod收集資訊。
組件使用:ACK專有叢集完成遷移後,部分組件會轉為ACK託管,因此需要在遷移前檢查組件是否存在異常。
類別 | 檢查項 | 描述 |
叢集資源 | API Server SLB | SLB執行個體是否存在。 |
SLB執行個體狀態是否正常。 | ||
SLB監聽(連接埠及協議)配置是否正常。 | ||
SLB執行個體後端伺服器組配置是否正常。 | ||
SLB存取控制配置是否正確。若不存在,則直接通過。 | ||
VPC | VPC執行個體是否存在。 | |
VPC執行個體是否正常。 | ||
vSwitch | 交換器是否存在。 | |
交換器是否正常。 | ||
交換器的可用IP數量大於等於2。 | ||
ECS | ECS執行個體是否存在。 | |
ECS執行個體是否正常。 | ||
ECS安全性群組是否正常。 | ||
雲助手用戶端是否正常。 | ||
叢集組件 | Kube Proxy Master | 組件是否存在。 |
Kube Proxy Worker | 組件是否存在。 | |
API Service | 是否存在停用API Service。 | |
叢集執行個體 | 叢集Master數量是否為3或5。 | |
節點 | 節點IP是否存在。 | |
節點是否可調度。 | ||
節點是否Ready。 | ||
節點作業系統是否支援升級。 | ||
節點可用Pod數量大於2。 | ||
叢集配置 | 作業系統 | 作業系統是否支援升級。 |
yum | yum是否正常。 | |
組件使用 | cloud-controller-manager | cloud-controller-manager組件是否存在異常。 |
組件檢查
組件檢查適用於組件升級情境。在組件升級前首先會觸發組件升級檢查,僅當組件升級檢查通過後才能進行組件升級。
類別 | 檢查項 | 描述 |
cloud-controller-manager | Addon_CCM | 升級該組件是否會導致SLB變更。 |
Component_Block_Version | 是否可以升級CCM版本。 | |
csi-plugin | DaemonSet_Annotation | DaemonSet的註解是否符合預期。 |
Csi_Driver_Attributes | CSI Driver屬性是否符合要求。 | |
Node_Status_Ready | 叢集節點是否Ready。 | |
csi-provisioner | Stateful_Set_Exist | 是否為StatefulSet。 |
Deployment_Annotation | Deployment註解是否符合預期。 | |
Storage_Class_Attributes | StorageClass屬性是否符合要求。 | |
Csi_Provisioner_Node_Count | Ready節點數量是否大於等於2。 | |
terway-eniip | Systemd | 節點Systemd版本是否大於systemd-219-67。 |
nginx-ingress-controller | Deployment_Healthy | Nginx Ingress Deployment是否健康。 |
Deployment_Not_Under_HPA | Deployment是否配置HPA。 | |
Deployment_Not_Modified | Deployment是否發生過變更。 | |
Nginx_Ingress_Pod_Error_Log | Nginx是否存在錯誤記錄檔。 | |
LoadBalancer_Service_Healthy | Nginx Service是否健康。 | |
Nginx_Ingress_Configuration | Ingress是否存在不相容配置。 | |
aliyun-acr-credential-helper | RamRole_Exist | 該組件是否對AliyunCSManagedAcrRole進行授權。 |
ack-cost-exporter | RamRole_Exist | 該組件是否對AliyunCSManagedCostRole進行授權。 |
節點池檢查
節點池檢查適用於節點池升級情境。節點池升級時首先會觸發節點池檢查,僅當節點池檢查通過後才能進行節點池升級。
節點池檢查包含以下三類:
叢集資源:檢查ACK叢集相關的雲資源,例如SLB、VPC等。
叢集組件:檢查ACK叢集配置、節點配置及應用配置。
叢集配置:檢查ACK叢集節點的相關配置。該檢查需要在節點上建立Pod收集資訊。
類別 | 檢查項 | 描述 |
叢集資源 | API Server SLB | SLB執行個體是否存在。 |
SLB執行個體狀態是否正常。 | ||
SLB監聽(連接埠及協議)配置是否正常。 | ||
SLB執行個體後端伺服器組配置是否正常。 | ||
SLB存取控制配置是否正確,若不存在,則直接通過。 | ||
VPC | VPC執行個體是否存在。 | |
VPC執行個體是否正常。 | ||
vSwitch | 交換器是否存在。 | |
交換器是否正常。 | ||
交換器的可用IP數量大於等於2。 | ||
叢集組件 | API Service | 是否存在停用API Service。 |
叢集執行個體 | 叢集Master數量是否為3或5。 | |
節點 | 節點是否Ready。 | |
節點可用Pod數量是否大於2。 | ||
HostPath | 節點是否存在使用HostPath的Pod。 | |
叢集配置 | iptables配置 | iptables配置是否正常。 |
作業系統 | 作業系統是否支援升級。 | |
yum | yum是否正常。 | |
磁碟 | 節點檔案系統是否正常。 | |
節點剩餘磁碟空間 | 是否有超過5%的節點剩餘磁碟空間。 | |
Swap | 節點是否開啟Swap。 | |
NTP | 節點NTP是否正常。 | |
Systemd | 節點Systemd版本是否大於systemd-219-67。 | |
kubelet | kubelet配置是否符合預期。 | |
容器運行時 | Docker運行時或containerd運行時是否正常。 | |
核心配置 | 節點核心配置是否正常。 | |
Manifest配置 | Manifest檔案是否符合預期。 |
異常檢查項修複方案
異常檢查項 | 修複方案 |
Systemd版本過低 | |
組件版本過低 | 升級對應組件版本。具體操作,請參見管理組件。 |
yum檢查逾時 | 執行以下命令,檢查yum是否逾時。預設逾時時間為10s。 |
API Service不可用 |
|
節點存在使用HostPath的Pod | 在Node替盤升級時,如果Pod使用了HostPath將容器目錄掛載在宿主機上,則存在資料丟失的風險。您需要對該Pod的掛載目錄進行檢查。如果沒有影響則可以繼續執行升級。檢查結果僅作為提示資訊。 |
叢集中存在廢棄API | 判斷廢棄API的來源,對廢棄API採取對應處理措施。具體操作,請參見廢棄API說明。 |
廢棄API說明
Kubernetes 1.20及之後版本的叢集升級前檢查時,支援檢查廢棄API資訊。在檢查結果的執行個體列表中可以看到叢集使用的廢棄API。
例如從Kubernetes 1.20版本升級至Kubernetes 1.22版本時,系統會掃描過去一天的審計日誌,檢查1.20版本叢集中是否使用了廢棄API。
如果1.20版本叢集中使用了廢棄API,檢查結果不會阻塞升級流程,僅作為提示資訊。
如果叢集在1.22版本中繼續使用廢棄API,可能會有安全隱患,請自行判定對業務的影響。
廢棄API根據請求來源(User Agent)分為以下四類,建議在升級前,通過以下表格中的類別判斷廢棄API的來源,對廢棄API採取對應處理措施。
類別 | 處理建議 | 舉例 |
core | Kubernetes核心組件:ACK會在叢集升級時由後台自動升級,檢查頁面不會展示,不需要您進行升級。 | kube-apiserver、kube-scheduler、kube-controller-manager |
ack | ACK組件:由ACK提供的組件,廢棄API頁面不會展示,ACK會引導您在組件管理頁面通過升級組件來解決問題, 說明
| metrics-server、nginx-ingress-controller、CoreDNS |
opensource | 開源組件:ACK會展示開源社區的部分開源組件,您需要自行判斷是否升級。 說明 廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。 | rancher、elasticsearch-operator等 |
unknown | 未知來源:以上規則均無法匹配時,ACK會標記為未知來源,您需要自行判斷是否升級,自行完成升級。 說明 廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。 | kubectl、agent、Go-http-client、okhttp |
查看廢棄API資訊的具體方法如下:
在叢集升級頁面,單擊前置檢查,然後單擊查看詳情。
在檢查報告頁面,點擊查看詳情。
詳情頁會展示廢棄的API、使用者代理程式、類別、廢棄的Kubernetes版本、最近一次訪問的時間、最近一次訪問的來源IP。