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版本过低 |
|
|
组件版本过低 |
升级对应组件版本。具体操作,请参见管理组件。 |
|
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。
检查报告页面包含集群资源、集群组件和节点配置三个页签。在节点配置页签下,可看到警告级别的检查项,其检查内容为"集群中还在使用已废弃的Kubernetes API"。