全部產品
Search
文件中心

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

更新時間:Dec 28, 2024

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不可用

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

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

    重要

    誤刪除APIService會導致叢集異常。如果您不清楚異常APIService用途,請提交工單聯絡我們。

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

叢集中存在廢棄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會展示並引導您在組件管理頁面升級組件。

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

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

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

metrics-server、nginx-ingress-controller、coredns

opensource

開源組件:社區的部分開源組件,ACK會展示清單,但需要您自行判斷是否升級,自行完成升級。如果有遺漏,會顯示在unknown分類中。

說明

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

rancher、elasticsearch-operator等

unknown

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

說明

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

kubectl、agent、Go-http-client、okhttp