容器服务ACK提供定时巡检功能。您可以设置巡检的定时规则,定期检查集群存在的风险预警。本文介绍集群巡检的常见风险预警以及修复方案。

集群巡检项

说明

关于如何使用集群巡检功能,请参见使用集群巡检

检查类型预警风险

资源配额

ResourceQuotas

VPC路由表条目配额紧张
VPC内SLB配额紧张
ECS可关联SLB配额紧张
SLB后端服务器配额紧张
SLB可监听数配额紧张

资源水位

ResourceLevel

SLB带宽使用率过高
SLB最大连接数过高
SLB新建连接速率过高
SLB QPS过高
集群Pod网段余量紧张
NAT网关连接数过高
节点CPU水位过高
节点内存水位过高
vSwitch剩余IP不足
Ingress Controller SLB新建连接速率检查
Ingress Controller SLB QPS检查

版本证书

Versions&Certificates

集群版本过低
集群证书即将过期
CoreDNS版本过低
Ingress版本过低
节点Systemd版本过低
节点OS版本过低

集群风险

ClusterRisk

CoreDNS部署形态异常
CoreDNS部署在Master节点上
节点Docker Hang
节点最大Pod数设置检查
Ingress Controller SLB健康检查失败检查
Ingress就绪Pod百分比
Ingress Controller Pod错误日志
Nginx Ingress中rewrite-target配合捕获组使用
Nginx Ingress灰度规则
Nginx Ingress使用正确的Annotation
废弃组件检查
集群API Server连接状态
节点公网访问情况

VPC路由表条目配额紧张

预警说明:VPC内剩余路由表条目配额少于5条。Flannel集群每个节点都会消耗一条路由表规则,当路由表规则耗尽后,集群内无法添加新节点。Terway集群不使用VPC路由表。

修复方案:VPC默认情况下仅支持200条路由表项。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制

VPC内SLB配额紧张

预警说明:VPC内SLB剩余配额小于5个。每个Loadbalancer类型的Kubernetes Service创建一个SLB实例,SLB配额耗尽后,新创建的Loadbalancer类型Service将无法正常工作。

修复方案:默认情况下一个用户可以保留60个SLB实例。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制

ECS可关联SLB配额紧张

预警说明:ECS可关联的SLB数量有限制。Loadbalancer类型的Service,其后端Pod所在的ECS被添加到SLB的后端。同一个ECS关联的SLB达到上限后,其新部署的LoadBalancer类型Service的后端Pod将无法正常提供服务。

修复方案:默认情况下一个ECS实例可挂载的后端服务器组的数量为50。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制

SLB后端服务器配额紧张

预警说明:SLB后端可挂载的ECS数量有限制。当Loadbalancer类型的Service规模较大时,Pod分布在多个ECS上,当ECS数量超过SLB后端可挂载的ECS数量限制时,超出部分的ECS将无法配置到SLB上。

修复方案:默认情况下一个SLB实例可以挂载200个后端服务器。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制

SLB可监听数配额紧张

预警说明:SLB可配置的监听数量有限,每个Loadbalancer类型的Service,其监听的每个端口对应一个SLB的监听。当端口数达到SLB监听上限时,超出部分的端口将无法正常提供服务。

修复方案:默认情况下一个SLB实例可以添加50个监听。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制

SLB带宽使用率过高

预警说明:过去三天网络流出带宽的最大值达到上限的80%以上。当带宽达到上限后,可能产生SLB上的丢包,导致请求抖动、延迟。

修复方案:若SLB实例网络带宽使用率过高,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

SLB最大连接数过高

预警说明:过去三天最大连接数达到上限的80%以上。当连接数达到上限后,无法建立新连接,导致客户端无法访问。

修复方案:若过去三天内SLB实例连接数过高,达到最大连接数的80%。超过SLB连接数最大值会导致客户端无法访问。为避免业务受损,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

SLB新建连接速率过高

预警说明:过去三天最大新建连接速率达到上限的80%以上。当新建连接速率达到上限后,短时间内无法建立新连接,导致客户端无法访问。

修复方案:若过去三天内SLB实例新建连接速率过高,达到每秒最大新建连接数的80%。新建连接数达到SLB每秒最大新建连接数的最大值会导致客户端无法访问。为避免业务受损,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

SLB QPS过高

预警说明:过去三天最大QPS达到上限的80%以上。当QPS达到上限后,可能导致客户端无法访问。

修复方案:若过去三天内SLB实例QPS过高,达到最大QPS的80%。超过SLB QPS最大值会导致客户端无法访问。为避免业务受损,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

集群Pod网段余量紧张

预警说明:Flannel集群剩余可用PodCIDR网段少于5个。每个节点消耗一个PodCIDR网段,集群可添加的节点少于5个。Pod网段耗尽后,新添加的节点将无法正常工作。

修复方案:请您提交工单处理。

NAT网关连接数过高

预警说明:过去一周内NAT Gateway水位曾达到上限的85%。水位达到上限后,业务无法通过NAT访问公网,可能导致业务异常。

修复方案:请您提升NAT规则。具体操作,请参见普通型公网NAT网关升级至增强型公网NAT网关FAQ

节点CPU水位过高

预警说明:过去一周内节点CPU水位过高。节点上部署了太多的Pod,产生资源争抢。若CPU水位过高,可能导致部分业务不能正常运行。

修复方案:若一周内节点CPU最大值达到上限100%。为避免业务受损,您需要设置合理的Pod request和Limit。具体操作,请参见设置容器的CPU和内存资源上下限

节点内存水位过高

预警说明:过去一周内节点内存水位过高。节点上部署了太多的Pod,资源争抢,内存水位过高,可能导致OOM(Out of Memory),影响部分业务的正常运行。

修复方案:若一周内节点内存水位达到上限90%,为避免业务受损,您需要设置合理的Pod request和Limit。具体操作,请参见设置容器的CPU和内存资源上下限

vSwitch剩余IP不足

预警说明:Terway集群内配置的vSwitch剩余IP小于10个,每个Pod占用一个IP。当可用IP耗尽后,新创建的Pod分配不到IP,所以无法正常启动。

修复方案:您需要尽快扩容或更换vSwitch。具体操作,请参见容器服务Kubernetes的Terway网络场景中交换机的IP资源不足

Ingress Controller SLB新建连接速率检查

预警说明:检查SLB过去三天最大新建连接速率是否达到上限的80%。新建连接速率达到上限后,短时间内无法建立新连接,可能导致客户端无法访问。

修复方案:SLB实例新建连接速率过高,为避免业务受损,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

Ingress Controller SLB QPS检查

预警说明:检查SLB过去三天最大QPS是否达到上限的80%。QPS达到上限后,可能导致客户端无法访问。

修复方案:SLB实例QPS过高,为避免业务受损,您需要提升实例规格。具体操作,请参见使用指定的SLB实例

集群版本过低

预警说明:集群版本即将或者已经超出支持期限。ACK保障最近的三个Kubernetes大版本的稳定运行,同时支持最新版本之前两个大版本的升级功能。例如,当前最新版本为v1.20,则ACK支持v1.18、v1.16的升级功能。过期版本的集群存在运行不稳定和集群升级失败的风险。关于ACK版本机制和Kubernetes版本发布记录,请参见版本机制Kubernetes版本发布概览

修复方案:若集群版本即将或者已经超出支持期限,请您尽快升级集群。具体操作,请参见升级ACK集群K8s版本

集群证书即将过期

预警说明:集群证书过期将导致集群无法正常运行。

修复方案:您需要尽快更新证书。具体操作,请参见更新专有版集群即将过期的证书

CoreDNS版本过低

预警说明:集群内CoreDNS组件版本过低,会导致业务出现DNS解析问题。最新版的CoreDNS提供了更好的稳定性配置和新的功能。

修复方案:为避免业务出现DNS解析问题,您需要尽快升级CoreDNS 。具体操作,请参见CoreDNS手动升级

Ingress版本过低

预警说明:集群内Ingress组件版本过低,会产生Ingress故障,导致业务流量受损。最新版的Ingress提供了更好的稳定性配置和新的功能。

修复方案:为了避免Ingress故障导致业务流量受损,您需要尽快升级Ingress。更多信息,请参见Nginx Ingress FAQ

节点Systemd版本过低

预警说明:Systemd版本过低存在已知的稳定性风险,会导致Docker和Containerd等组件无法正常运行。

修复方案:关于Systemd版本过低的修复方案,请参见Kubernetes集群使用CentOS 7.6系统时kubelet日志含有“Reason:KubeletNotReady Message:PLEG is not healthy:”信息

节点OS版本过低

预警说明:操作系统版本过低,存在已知的稳定性风险,会导致Docker/Containerd等组件无法正常运行。

修复方案:您可以创建一个新的节点池,所有节点逐步轮转到新的节点池上。具体操作,请参见创建节点池

CoreDNS部署形态异常

预警说明:CoreDNS多个部分部署在一个节点上,存在单点失败的风险。当节点宕机或重启的时,CoreDNS无法提供服务,影响业务正常运行。

修复方案:请您更新到最新版本的CoreDNS。最新版本的CoreDNS中强制约束两个副本不能部署在同一个节点上。具体操作,请参见CoreDNS自动升级

CoreDNS部署在Master节点上

预警说明:CoreDNS运行在Master节点上,可能导致Master带宽过高,影响控制面正常运行。

修复方案:请逐个删除CoreDNS Pod,等待系统自动创建新的CoreDNS Pod,确保新的CoreDNS Pod已经调度到Worker节点上。

节点Docker Hang

预警说明:节点上发生Docker Hang,Docker已经无法正常运行。

修复方案:您需要登录节点,执行命令sudo systemctl restart docker,重启Docker。具体操作,请参见Dockerd异常处理-RuntimeOffline

节点最大Pod数设置检查

预警说明:检查节点最大Pod数设置与理论上限是否一致。

修复方案:节点最大Pod数设置与理论上限不一致。如果您从未修改该值,请提交工单处理。

Ingress Controller SLB健康检查失败检查

预警说明:检查SLB过去三天是否存在健康检查失败的情况,可能由于组件负载过高或配置错误引起。

修复方案:过去三天内存在健康检查失败。为避免业务受损,请检查Ingress Controller Service有无异常事件,组件负载是否过高。关于异常问题排查,请参见Nginx Ingress异常问题排查

Ingress就绪Pod百分比

预警说明:检查Ingress Deployment已就绪的Pod百分比,小于100表明Ingress Pod可能出现问题,无法正常启动或健康检查失败。

修复方案:通过Pod诊断或Ingress异常排查文档查找问题Pod。关于异常问题排查,请参见Nginx Ingress异常问题排查

Ingress Controller Pod错误日志

预警说明:检查Ingress Controller Pod中是否存在错误日志。出现错误日志,表示Ingress Controller可能工作异常。

修复方案:根据错误日志,查找原因并修复问题。关于异常问题排查,请参见Nginx Ingress异常问题排查

Nginx Ingress中rewrite-target配合捕获组使用

预警说明:检查使用了rewrite-target的Nginx Ingress规则是否与捕获组一起使用。在0.22.0及以上的Ingress Controller版本中使用rewrite-target时,需要显式指定捕获组,否则会造成流量转发异常。

修复方案:请重新配置规则。具体操作,请参见Nginx Ingress异常问题排查

Nginx Ingress灰度规则

预警说明:检查service-match和service-weight是否指定不超过2个的目标服务。service-match和service-weight目前仅支持2个服务间的流量分发,配置大于2个将导致多出的配置被忽略,出现流量不符合预期的情况。

修复方案:请调整规则中服务的数量。

Nginx Ingress使用正确的Annotation

预警说明:检查社区版Nginx Ingress Controller是否使用nginx.ingress.kubernetes.io开头的Annotation,而不是以nginx.com/nginx.org开头。使用nginx.com/nginx.org开头的Annotation,将无法被Nginx Ingress Controller识别,造成配置无效或不符合预期的情况。

修复方案:请选择所需功能的Annotation使用。关于Annotation更多信息,请参见阿里云官方文档或社区文档

废弃组件检查

预警说明:检查集群是否安装使用已经废弃的组件。

修复方案:请检查您的集群中是否安装或正在使用alicloud-application-controller组件,该组件目前已经下线且停止维护,安装或使用该组件可能会影响集群升级和正常使用。请尽快卸载已经废弃的组件。具体操作,请参见管理组件

集群API Server连接状态

预警说明:检查节点能否正常连接集群API Server。

修复方案:请检查集群相关配置。具体操作,请参见容器服务ACK集群故障排查

节点公网访问情况

预警说明:检查节点能否正常访问公网。

修复方案:请检查集群是否开启SNAT公网访问。关于开启SNAT公网相关操作,请参见为已有集群开启公网访问能力