全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:集群巡检项及解决方案

更新时间:Nov 16, 2023

容器智能运维平台提供定时巡检功能。您可以设置巡检的定时规则,定期检查集群存在的风险预警。本文介绍集群巡检的常见风险预警以及解决方案。

集群巡检项

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

  • 根据集群配置,具体巡检项可能稍有不同。实际结果请以检查报告结果为准。

检查类型

预警风险

资源配额

ResourceQuotas

VPC路由表条目配额紧张

VPC内SLB配额紧张

ECS可关联SLB配额紧张

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连接状态

节点公网访问情况

集群控制面vSwitch剩余IP

检查是否存在多个Service复用同一个SLB同一个端口

检查类型

预警风险

资源配额

ResourceQuotas

VPC内SLB配额紧张

SLB后端服务器配额紧张

SLB可监听数配额紧张

SLB实例数配额检查

资源水位

ResourceLevel

SLB带宽使用率过高

SLB最大连接数过高

SLB新建连接速率过高

SLB QPS过高

集群Pod网段余量紧张

NAT网关连接数过高

vSwitch剩余IP不足

Ingress Controller SLB新建连接速率检查

Ingress Controller SLB QPS检查

版本证书

Versions&Certificates

集群版本过低

集群证书即将过期

CoreDNS版本过低

Ingress版本过低

集群组件更新检查

集群风险

ClusterRisk

Ingress Controller SLB健康检查失败检查

Ingress就绪Pod百分比

Ingress Controller Pod错误日志

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

Nginx Ingress灰度规则

Nginx Ingress使用不正确的Annotation

废弃组件检查

集群API Server连接状态

集群控制面vSwitch剩余IP

检查是否存在多个Service复用同一个SLB同一个端口

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实例数配额检查

异常影响:检查SLB实例剩余配额是否小于5个。每个Loadbalancer类型的Kubernetes Service创建一个SLB实例,SLB配额耗尽后,新创建的Loadbalancer类型Service无法正常工作。

解决方案:默认情况下一个用户可以保留60个SLB实例,如需超过默认值,请到配额平台提交申请扩容。

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双数版本的稳定运行。过期版本的集群存在运行不稳定和集群升级失败的风险。关于ACK版本机制和Kubernetes版本发布记录,请参见版本机制Kubernetes版本发布概览

解决方案:若集群版本即将或者已经超出支持期限,请您尽快升级集群。具体操作,请参见升级集群和独立升级集群控制面和节点池

集群证书即将过期

异常影响:集群证书过期将导致集群无法正常运行。

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

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公网相关操作,请参见为已有集群开启公网访问能力

集群控制面vSwitch剩余IP

异常影响:集群控制面的vSwitch剩余IP小于10个,新创建的Pod可能将分配不到IP无法正常启动。

解决方案:提交工单处理。

检查是否存在多个Service复用同一个SLB同一个端口

异常影响:如果多个Service复用同一个SLB的同一个端口,会导致服务异常。

解决方案:请修改或删除冲突的Service,确保多个Service复用同一个SLB时使用不同的端口。