容器智能运维平台提供定时巡检功能。您可以设置巡检的定时规则,定期检查集群存在的风险预警。本文介绍集群巡检的常见风险预警以及解决方案。
集群巡检项
关于如何使用集群巡检功能,请参见使用集群巡检。
根据集群配置,具体巡检项可能稍有不同。实际结果请以检查报告结果为准。
检查类型 | 预警风险 |
资源配额 ResourceQuotas | |
资源水位 ResourceLevel | |
版本与证书 Versions&Certificates | |
集群风险 ClusterRisk | |
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时使用不同的端口。