容器服务ACK提供定时巡检功能。您可以设置巡检的定时规则,定期检查集群存在的风险预警。本文介绍集群巡检的常见风险预警以及修复方案。
集群巡检项
关于如何使用集群巡检功能,请参见使用集群巡检。
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公网相关操作,请参见为已有集群开启公网访问能力。