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。
檢查報告頁麵包含叢集資源、叢集組件和節點配置三個頁簽。在節點配置頁簽下,可看到警告層級的檢查項,其檢查內容為"叢集中還在使用已廢棄的Kubernetes API"。