全部產品
Search
文件中心

Container Service for Kubernetes:叢集檢查項及修複方案

更新時間:Sep 04, 2025

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版本過低

升級Systemd版本

組件版本過低

升級對應組件版本。具體操作,請參見管理組件

yum檢查逾時

執行以下命令,檢查yum是否逾時。預設逾時時間為10s。

time if type yum&>/dev/null; then yum list yum; fi

API Service不可用

  1. 執行以下命令,尋找停用API Service。

    kubectl -n kube-system get apiservices |grep -i false
  2. 確認異常API Service的用途。如果無需使用,執行以下命令,刪除該API Service。

    重要

    誤刪除API Service會導致叢集異常。如果您不清楚異常API Service用途,請聯絡支援人員。

    kubectl -n kube-system delete apiservices ${your-abnormal-apiservice-name}

節點存在使用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-apiserverkube-schedulerkube-controller-manager

ack

ACK組件:由ACK提供的組件,廢棄API頁面不會展示,ACK會引導您在組件管理頁面通過升級組件來解決問題,

說明
  • 您可以在Container Service管理主控台營運管理 > 組件管理頁面升級組件,組件升級完成後的第二天,廢棄API將不再展示。

  • 在某些情況下,CoreDNS組件可能會在1.24及以上版本的K8s叢集中使用廢棄API。如果檢查結果中包含coredns,請參考為什麼CoreDNS正在使用廢棄的API?進行處理。

  • 廢棄API僅作為提示資訊,不影響您的升級流程。叢集升級後,會將已經廢棄的API資源替換為新的資源。建議您在叢集升級後不要使用廢棄的API建立資源,避免造成安全隱患。

metrics-server、nginx-ingress-controller、CoreDNS

opensource

開源組件:ACK會展示開源社區的部分開源組件,您需要自行判斷是否升級。

說明

廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。

rancher、elasticsearch-operator等

unknown

未知來源:以上規則均無法匹配時,ACK會標記為未知來源,您需要自行判斷是否升級,自行完成升級。

說明

廢棄API僅作為提示資訊,不影響您的升級流程。請您按需對組件進行升級,避免影響部分功能。

kubectl、agent、Go-http-client、okhttp

查看廢棄API資訊的具體方法如下:

  1. 叢集升級頁面,單擊前置檢查,然後單擊查看詳情

  2. 檢查報告頁面,點擊查看詳情。

  3. 詳情頁會展示廢棄的API、使用者代理程式、類別、廢棄的Kubernetes版本、最近一次訪問的時間、最近一次訪問的來源IP。