ACK集群支持集群升级检查、集群迁移检查、组件检查和节点池检查。您可以在集群升级、迁移等操作前执行集群检查,确认集群是否符合要求,并获取异常检查项对应的修复方案。
集群检查项
集群升级检查
由于Kubernetes自身的复杂性,以及升级Kubernetess版本时引入的运行时变更、API废弃、特性变更等操作,集群升级存在较高的操作风险。为保障集群平稳升级,ACK引入了集群升级前置检查。集群升级时会首先触发集群升级检查,只有检查通过后才可以进行集群升级。
集群升级检查包含以下三类:
集群资源:检查ACK集群相关的云资源,例如SLB、ECS、VPC等。
集群组件:检查ACK集群配置、组件配置及应用配置,例如组件版本是否满足要求、应用是否使用过期API等。
集群配置:检查ACK集群节点的相关配置。该检查需要在节点上创建Pod用于收集信息。
不同集群类型、Kubernetes版本以及容器运行时对应的集群检查项不同。下表仅供参考,请以控制台实际检查项为准。
类别 | 检查项 | 描述 |
集群资源 | 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托管,因此需要在迁移前检查组件是否存在异常。
不同集群类型、Kubernetes版本以及容器运行时对应的集群检查项不同。下表仅供参考,请以控制台实际检查项为准。
类别 | 检查项 | 描述 |
集群资源 | APIServer 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组件是否存在异常。 |
组件检查
组件检查适用于组件升级场景。在组件升级前首先会触发组件升级检查,仅当组件升级检查通过后才能进行组件升级。
不同集群类型、Kubernetes版本以及容器运行时对应的集群检查项不同。下表仅供参考,请以控制台实际检查项为准。
类别 | 检查项 | 描述 |
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收集信息。
不同集群类型、Kubernetes版本以及容器运行时对应的集群检查项不同。下表仅供参考,请以控制台实际检查项为准。
类别 | 检查项 | 描述 |
集群资源 | 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文件是否符合预期。 |
异常检查项修复方案
异常检查项 | 修复方案 |
Aliyun_ARMS_CMonitor_Role权限策略不存在 | 为集群添加阿里云Prometheus监控授权策略。具体操作,请参见接入Kubernetes监控的手动添加ARMS和链路追踪权限策略内容。 |
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