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進行授權。 |
異常檢查項修複方案
|
異常檢查項 |
修複方案 |
|
組件版本過低 |
升級對應組件版本。具體操作,請參見管理組件。 |
|
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 |