Kubernetes应用扩缩容异常排查:TPS达标后扩容无效问题咨询
排查方向建议
Calico网络层面限制
- 检查是否存在针对Pod/Service的网络策略,是否误限制了流量转发;查看Calico Felix组件日志,排查是否有网络转发异常或瓶颈。
- 确认是否启用了Calico带宽管理功能,检查单个Pod或节点的带宽配额是否被打满,可通过
calicoctl get workloadendpoints -o yaml查看带宽配置。 - 验证Calico的BGP配置是否正常,是否存在节点间路由收敛延迟或丢包,导致流量无法正确分发到扩容后的Pod。
Service负载均衡与流量分发
- 检查Service的
sessionAffinity配置,若设置为ClientIP且超时过长,会导致流量集中在少数Pod,无法通过扩容分散负载。 - 确认kube-proxy运行模式(iptables/IPVS):IPVS模式下检查调度算法是否为
leastconn或rr,是否存在配置错误;iptables模式下检查规则是否冗余,是否有流量分发不均的情况。 - 查看Service的Endpoint列表,确认扩容后的Pod是否被正确注册,可通过
kubectl get endpoints <service-name>验证。
- 检查Service的
网络性能与内核参数
- 使用
iperf3测试Pod间、Pod与节点的带宽和延迟,对比VM环境的网络指标,排查是否存在K8s环境下的网络性能损耗。 - 检查节点内核网络参数,如
net.core.somaxconn(监听队列长度)、net.ipv4.tcp_tw_reuse(TIME_WAIT复用)、net.ipv4.tcp_max_syn_backlog(SYN队列长度),确保与VM环境配置一致。 - 查看节点网卡的RSS队列配置,是否存在中断绑定不合理导致的网络处理瓶颈。
- 使用
DNS与服务发现
- 检查高TPS下CoreDNS的请求成功率,查看CoreDNS日志是否有解析超时或错误;验证Pod的
/etc/resolv.conf配置,确认DNS超时设置是否合理。 - 测试Pod内部的DNS解析延迟,使用
dig或nslookup对比VM环境的解析速度,排查是否存在DNS性能瓶颈。
- 检查高TPS下CoreDNS的请求成功率,查看CoreDNS日志是否有解析超时或错误;验证Pod的
Ingress/入口层瓶颈
- 若流量通过Ingress Controller进入集群,检查Ingress的限流、超时配置是否合理,是否存在入口层限流导致请求失败。
- 确认Ingress Controller的资源配置是否足够,查看其CPU、内存使用率,是否成为流量瓶颈;检查Ingress的负载均衡策略,是否未将流量分发到所有扩容后的Pod。
连接数与资源限制
- 检查节点的本地端口范围(
net.ipv4.ip_local_port_range),是否存在端口耗尽导致新连接无法建立;查看Pod的ulimit配置,对比VM环境的文件句柄、进程数限制,是否存在过低限制。 - 统计节点上的TIME_WAIT连接数量,若过多可调整内核参数优化连接回收。
- 检查节点的本地端口范围(
外部依赖与连接池
- 检查应用依赖的外部服务(数据库、缓存等)是否存在性能瓶颈,对比K8s与VM环境下的外部服务响应时间,是否因为网络路径差异导致延迟增加。
- 验证应用的连接池配置,是否在高TPS下连接池耗尽,无法建立新的外部连接;确认外部服务是否对K8s集群IP段有流量限制。
Pod调度与资源细节
- 检查扩容后的Pod调度分布,是否集中在少数节点导致节点网络负载过高;查看节点的资源使用情况,是否存在网络资源(如带宽)被其他Pod占用。
- 确认Pod的
resources配置,是否limits设置过低导致隐性资源限制;检查kubelet的CPUManager、TopologyManager配置,是否影响Pod的网络资源分配。
内容的提问来源于stack exchange,提问作者Techie
相关产品推荐
相关产品推荐

