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