文档

集群巡检项及解决方案

更新时间:

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

集群巡检项

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

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

检查类型

预警风险

资源配额

ResourceQuotas

VPC路由表条目配额紧张

ECS可关联SLB配额紧张

SLB后端服务器配额紧张

SLB可监听数配额紧张

SLB实例数配额紧张

资源水位

ResourceLevel

SLB带宽使用率过高

SLB最大连接数过高

SLB新建连接速率过高

SLB QPS过高

集群Pod网段余量紧张

节点CPU水位过高

节点内存水位过高

vSwitch剩余IP不足

Ingress Controller SLB新建连接速率检查

Ingress Controller SLB QPS检查

集群控制面vSwitch剩余IP

版本与证书

Versions&Certificates

集群版本过低

CoreDNS版本过低

节点Systemd版本过低

节点OS版本过低

集群组件更新检查

集群风险

ClusterRisk

节点Docker Hang

节点最大Pod数设置检查

CoreDNS ConfigMap配置

CoreDNS部署位置

CoreDNS节点高可用

DNS服务后端的服务端点

DNS服务的ClusterIP检查

集群NAT网关状态

集群NAT网关并发超规格丢弃速率

NodeLocal DNSCache DNS配置自动注入

API Server SLB访问控制配置

API Server SLB实例后端状态

API Server SLB 6443端口监听配置

API Server SLB实例

API Server SLB实例状态

Ingress Controller SLB健康检查失败检查

Ingress就绪Pod百分比

Ingress Controller Pod错误日志

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

Nginx Ingress灰度规则

Nginx Ingress使用正确的Annotation

废弃组件检查

集群API Server连接状态

节点Pod网段VPC路由表条目检查

节点文件系统只读状态

节点kubelet组件版本

节点安全组出方向规则检查

节点安全组入方向规则检查

节点公网访问情况

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

检查类型

预警风险

资源配额

ResourceQuotas

SLB后端服务器配额紧张

SLB可监听数配额紧张

SLB实例数配额紧张

资源水位

ResourceLevel

SLB带宽使用率过高

SLB最大连接数过高

SLB新建连接速率过高

SLB QPS过高

集群Pod网段余量紧张

vSwitch剩余IP不足

Ingress Controller SLB新建连接速率检查

Ingress Controller SLB QPS检查

集群控制面vSwitch剩余IP

版本与证书

Versions&Certificates

集群版本过低

CoreDNS版本过低

集群组件更新检查

集群风险

ClusterRisk

CoreDNS ConfigMap配置

CoreDNS部署位置

CoreDNS节点高可用

DNS服务后端的服务端点

DNS服务的ClusterIP检查

集群NAT网关状态

集群NAT网关并发超规格丢弃速率

NodeLocal DNSCache DNS配置自动注入

API Server SLB访问控制配置

API Server SLB实例后端状态

API Server SLB 6443端口监听配置

API Server SLB实例

API Server SLB实例状态

Ingress Controller SLB健康检查失败检查

Ingress就绪Pod百分比

Ingress Controller Pod错误日志

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

Nginx Ingress灰度规则

Nginx Ingress使用正确的Annotation

废弃组件检查

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

VPC路由表条目配额紧张

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

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

ECS可关联SLB配额紧张

异常影响:检查每个ECS实例可挂载的后端服务器组配额。ECS可关联的SLB数量有限制。LoadBalancer类型的Service,其后端Pod所在的ECS被添加到SLB的后端。同一个ECS关联的SLB达到上限后,其新部署的LoadBalancer类型Service的后端Pod将无法正常提供服务。

解决方案:默认情况下一个ECS实例可挂载的后端服务器组的数量为50。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制。关于负载均衡注意事项,请参见Service的负载均衡配置注意事项

SLB后端服务器配额紧张

异常影响:检查SLB实例可以挂载后端服务器配额。SLB后端可挂载的ECS数量有限制。当LoadBalancer类型的Service规模较大时,Pod分布在多个ECS上,当ECS数量超过SLB后端可挂载的ECS数量限制时,超出部分的ECS将无法配置到SLB上。

解决方案:默认情况下一个SLB实例可以挂载200个后端服务器。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制。关于负载均衡注意事项,请参见Service的负载均衡配置注意事项

SLB可监听数配额紧张

异常影响:检查SLB实例监听数。SLB可配置的监听数量有限,每个LoadBalancer类型的Service,其监听的每个端口对应一个SLB的监听。当端口数达到SLB监听上限时,超出部分的端口将无法正常提供服务。

解决方案:默认情况下一个SLB实例可以添加50个监听。如需超过默认值,请到配额平台提交申请扩容。关于配额限制,参见配额限制。关于负载均衡注意事项,请参见Service的负载均衡配置注意事项

SLB实例数配额紧张

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

解决方案:默认情况下一个用户可以保留60个SLB实例,如需超过默认值,请到配额平台提交申请扩容。关于负载均衡注意事项,请参见Service的负载均衡配置注意事项

SLB带宽使用率过高

异常影响:检查SLB过去三天网络流出带宽的最大值是否达到上限的80%以上。当带宽达到上限后,可能产生SLB上的丢包,导致请求抖动、延迟。

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

SLB最大连接数过高

异常影响:检查SLB过去三天最大连接数是否达到上限的80%以上。当连接数达到上限后,短时间内无法建立新连接,导致客户端无法访问。

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

SLB新建连接速率过高

异常影响:检查SLB过去三天最大新建连接速率是否达到上限的80%以上。当新建连接速率达到上限后,短时间内无法建立新连接,导致客户端无法访问。

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

SLB QPS过高

异常影响:检查SLB过去三天最大QPS是否达到上限的80%以上。当QPS达到上限后,可能导致客户端无法访问。

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

集群Pod网段余量紧张

异常影响:检查Flannel集群剩余可用PodCIDR网段是否少于5个。每个节点消耗一个PodCIDR网段,集群可添加的节点少于5个。Pod网段耗尽后,新添加的节点将无法正常工作。

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

节点CPU水位过高

异常影响:检查节点过去一周内节点CPU使用率。节点CPU水位过高时,如果部署较多Pod会导致资源争抢,可能会影响业务的正常运行。

解决方案:为避免业务受损,您需要设置合理的Pod request和limit,避免一个节点上运行的Pod过多。具体操作,请参见设置容器的CPU和内存资源上下限

节点内存水位过高

异常影响:检查节点过去一周内节点内存使用率。节点内存水位过高时如部署较多Pod会导致资源争抢,可能导致OOM(Out of Memory),影响部分业务的正常运行。

解决方案:为避免业务受损,您需要设置合理的Pod request和limit,避免一个节点上运行的Pod过多。具体操作,请参见设置容器的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实例

集群控制面vSwitch剩余IP

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

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

集群版本过低

异常影响:集群版本即将或者已经超出支持期限。ACK仅保障支持最近三个Kubernetes双数版本的稳定运行。过期版本的集群存在运行不稳定和集群升级失败的风险。关于ACK版本机制和Kubernetes版本发布记录,请参见版本机制Kubernetes版本发布概览

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

CoreDNS版本过低

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

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

节点Systemd版本过低

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

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

节点OS版本过低

异常影响:操作系统版本过低,存在已知的稳定性风险,会导致Docker/containerd等组件无法正常运行。

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

集群组件更新检查

异常影响:检查集群中关键组件是否需要更新版本。

解决方案:您的集群中部分组件需要尽快更新版本,您可以在容器服务控制台升级相关组件。

节点Docker Hang

异常影响:节点上发生Docker Hang,Docker已经无法正常运行。

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

节点最大Pod数设置检查

异常影响:检查节点最大Pod数设置与理论上限是否一致。

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

CoreDNS ConfigMap配置

异常影响:检查CoreDNS ConfigMap配置是否异常,异常配置将会影响组件正常运行。

解决方案:请检查CoreDNS ConfigMap配置。更多信息,请参见DNS最佳实践

CoreDNS部署位置

异常影响:检查CoreDNS实例是否部署在Master节点上,CoreDNS运行在Master节点上可能导致Master带宽过高,影响控制面正常运行。

解决方案:请将CoreDNS副本部署到Worker节点上。具体操作,请参见DNS解析异常问题排查

CoreDNS节点高可用

异常影响:检查CoreDNS实例部署形态,CoreDNS多个实例部署在同一节点上存在单点故障的风险,当节点出现故障、重启时CoreDNS将无法提供服务,影响业务正常运行。

解决方案:请将CoreDNS副本部署到不同的节点上。具体操作,请参见DNS解析异常问题排查

DNS服务后端的服务端点

异常影响:检查集群DNS服务关联的后端DNS服务器数,如果为0,DNS服务将无法使用。

解决方案:检查CoreDNS Pod运行状态和运行日志,排查DNS问题。具体操作,请参见DNS解析异常问题排查

DNS服务的ClusterIP检查

异常影响:检查集群DNS服务的Cluster IP是否正常分配,集群DNS服务异常会造成集群功能异常,影响业务。

解决方案:检查CoreDNS Pod运行状态和运行日志,排查DNS问题。具体操作,请参见DNS解析异常问题排查

集群NAT网关状态

异常影响:检查集群NAT网关状态。

解决方案:请登录NAT网关管理控制台检查集群的NAT网关是否处于欠费锁定状态,及时处理。

集群NAT网关并发超规格丢弃速率

异常影响:检查NAT网关会话并发超规格丢弃速率是否过高。

解决方案:若集群NAT网关会话并发超规格丢弃速率过高,请尝试通过升级NAT网关的规格解决,具体操作,请参见普通型公网NAT网关升级至增强型公网NAT网关FAQ

NodeLocal DNSCache DNS配置自动注入

异常影响:检查NodeLocal DNSCache DNS配置自动注入是否开启。NodeLocal DNSCache只会在注入DNS配置后生效,如果没有开启自动注入,DNS缓存能力可能处于尚未生效状态。

解决方案:开启NodeLocal DNSCache DNS配置自动注入。具体操作,请参见使用NodeLocal DNSCache

API Server SLB访问控制配置

异常影响:检查集群API Server SLB 访问控制配置是否正确。即集群API Server负载均衡访问控制是否放开集群VPC网段及100.104.0.0/16,访问控制配置错误会造成集群不可用。

解决方案:请检查API Server SLB访问控制并及时调整。

API Server SLB实例后端状态

异常影响:检查ACK专有集群的API Server SLB实例后端状态。ACK专有集群中API Server负载均衡实例后端需包含Master节点机器,否则会造成流量转发异常。

解决方案:请调整负载均衡实例转发配置,将其加入Master节点机器。

API Server SLB 6443端口监听配置

异常影响:检查集群API Server SLB 6443端口监听配置。若配置异常,将导致集群无法访问。

解决方案:集群API Server负载均衡实例6443端口监听配置异常,请调整负载均衡实例监听设置,恢复至集群创建时状态。

API Server SLB实例

异常影响:检查集群API Server负载均衡实例是否存在。若集群API Server负载均衡实例不存在,会造成集群不可用。

解决方案:请检查负载均衡实例是否存在,如果确认误删除,请提交工单处理。

API Server SLB实例状态

异常影响:检查集群API Server SLB实例状态。若实例状态异常,将会影响集群可用性。

解决方案:请检查负载均衡实例状态是否正常。

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集群故障排查

节点Pod网段VPC路由表条目检查

异常影响:检查节点的Pod网段是否在VPC的路由表中。

解决方案:若节点Pod网段不在VPC路由表条目中,请添加Pod网段的下一跳路由到当前节点。具体操作,请参见添加自定义路由条目到自定义路由表

节点文件系统只读状态

异常影响:节点出现文件系统只读,通常是因为磁盘故障,可能导致节点无法写入数据,造成业务异常。

解决方案:请尝试在节点上使用fsck命令修复文件系统,然后重启节点。

节点kubelet组件版本

异常影响:检查节点kubelet组件版本是否低于控制面版本。

解决方案:若您的集群中节点kubelet组件版本低于控制面版本,为避免可能的稳定性问题,建议您手动移除该节点。更多信息,请参见相关功能及自定义配置说明

节点安全组出方向规则检查

异常影响:检查节点安全组出方向规则是否满足集群访问权限需求。

解决方案:若节点安全组出方向规则不满足集群访问权限需求,请调整出方向安全组规则。具体操作,请配置集群安全组

节点安全组入方向规则检查

异常影响:检查节点安全组入方向规则是否满足集群访问权限需求。

解决方案:若节点安全组入方向规则不满足集群访问权限需求,请调整入方向安全组规则。具体操作,请配置集群安全组

节点公网访问情况

异常影响:检查节点能否正常访问公网。

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

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

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

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