容器服务平台支持集群升级检查、集群迁移检查和组件检查。本文介绍集群检查项及异常检查项修复方案。
索引
集群检查项
集群升级检查
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 |