Container Service平台支援叢集升級檢查、叢集遷移檢查和組件檢查。本文介紹叢集檢查項及異常檢查項修複方案。
索引
叢集檢查項
叢集升級檢查
Kubernetes自身的複雜性,以及升級K8s版本時引入的運行時變更、API廢棄、特性變更等操作,導致叢集升級存在較高操作風險。為保障叢集平穩升級,ACK引入了叢集升級前置檢查。叢集升級時會首先觸發叢集升級檢查,僅當檢查通過後才可以進行叢集升級。
叢集升級檢查包含以下兩類:
叢集資源:檢查ACK Serverless叢集相關的雲資源,例如SLB、VPC等。
叢集組件:檢查ACK Serverless叢集配置、組件配置及應用配置,例如組件版本是否滿足要求、應用是否使用到期API等。
不同的類型、版本及運行時的叢集檢查項有所差別。下表僅供參考,請以實際檢查項為準。
類別 | 檢查項 | 描述 |
叢集資源 | APIServer SLB | SLB執行個體是否存在。 |
SLB執行個體狀態是否正常。 | ||
SLB監聽(連接埠及協議)配置是否正常。 | ||
SLB執行個體後端伺服器組配置是否正常。 | ||
SLB存取控制配置是否正確,若不存在,則直接通過。 | ||
VPC | VPC執行個體是否存在。 | |
VPC執行個體是否正常。 | ||
vSwitch | 交換器是否存在。 | |
交換器是否正常。 | ||
交換器的可用IP數量大於等於2。 | ||
叢集組件 | Kube Proxy Master | 組件是否存在。 |
Kube Proxy Worker | 組件是否存在。 | |
API Service | 是否存在停用API Service。 | |
叢集組件 | Terway組件版本是否符合要求。 | |
CoreDNS組件版本是否符合要求。 | ||
Cloud Controller Manager組件版本是否符合要求。 | ||
Nginx Ingress Controller組件版本是否符合要求。 | ||
Metric Server組件版本是否符合要求。 | ||
廢棄API | 叢集中是否使用已廢棄的API。 | |
叢集配置 | iptables配置 | iptables配置是否正常。 |
作業系統 | 作業系統是否支援升級。 | |
yum | yum是否正常。 | |
Kubelet | Kubelet配置是否符合預期。 | |
容器運行時 | Docker運行時或Containerd運行時是否正常。 | |
Manifest配置 | Manifest檔案是否符合預期。 |
叢集遷移檢查
在叢集遷移前會觸發遷移前置檢查,僅當遷移檢查通過後才能進行叢集遷移。適用於以下情境:
從ACK Serverless叢集基礎版遷移至ACK Serverless叢集Pro版。
叢集遷移檢查包含以下四類:
叢集資源:檢查ACK Serverless叢集相關的雲資源,例如SLB、VPC等。
叢集組件:檢查ACK Serverless叢集中組件配置,例如是否存在停用API Service等。
不同的類型、版本及運行時的叢集遷移檢查項有所差別,下表僅供參考,請以實際檢查項為準。
類別 | 檢查項 | 描述 |
叢集資源 | APIServer SLB | SLB執行個體是否存在。 |
SLB執行個體狀態是否正常。 | ||
SLB監聽(連接埠及協議)配置是否正常。 | ||
SLB執行個體後端伺服器組配置是否正常。 | ||
SLB存取控制配置是否正確。若不存在,則直接通過。 | ||
VPC | VPC執行個體是否存在。 | |
VPC執行個體是否正常。 | ||
vSwitch | 交換器是否存在。 | |
交換器是否正常。 | ||
交換器的可用IP數量大於等於2。 | ||
叢集組件 | Kube Proxy Master | 組件是否存在。 |
Kube Proxy Worker | 組件是否存在。 | |
API Service | 是否存在停用API Service。 |
組件檢查
組件檢查適用於組件升級情境。在組件升級前首先會觸發組件升級檢查,僅當組件升級檢查通過後才能進行組件升級。
不同的類型、版本及運行時的組件檢查項有所差別,下表僅供參考,請以實際檢查項為準。
類別 | 檢查項 | 描述 |
cloud-controller-manager | Addon_CCM | 升級該組件是否會導致SLB變更。 |
Component_Block_Version | 是否可以升級CCM版本。 | |
csi-plugin | DaemonSet_Annotation | DaemonSet的註解是否符合預期。 |
Csi_Driver_Attributes | CSI Driver屬性是否符合要求。 | |
csi-provisioner | Stateful_Set_Exist | 是否為StatefulSet。 |
Deployment_Annotation | Deployment註解是否符合預期。 | |
Storage_Class_Attributes | StorageClass屬性是否符合要求。 | |
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進行授權。 |
異常檢查項修複方案
異常檢查項 | 修複方案 |
Aliyun_ARMS_CMonitor_Role權限原則不存在 | 為叢集添加阿里雲Prometheus監控授權策略。具體操作,請參見接入Kubernetes監控的手動添加ARMS和鏈路追蹤權限原則內容。 |
組件版本過低 | 升級對應組件版本。具體操作,請參見管理組件。 |
APIService不可用 |
|
叢集中存在廢棄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會在叢集升級時由後台自動升級,檢查頁面不會展示,不需要您進行升級。 | apiserver、scheduler、kube-controller-manager |
ack | ACK組件:由ACK提供的組件,需要您自行判斷升級時機,ACK會展示並引導您在組件管理頁面升級組件。 說明
| metrics-server、nginx-ingress-controller、coredns |
opensource | 開源組件:社區的部分開源組件,ACK會展示清單,但需要您自行判斷是否升級,自行完成升級。如果有遺漏,會顯示在unknown分類中。 說明 廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。 | rancher、elasticsearch-operator等 |
unknown | 未知來源:以上規則均無法匹配時,會標記為未知來源,ACK會展示清單,但需要您自行判斷是否升級,自行完成升級。 說明 廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。 | kubectl、agent、Go-http-client、okhttp |