centos部署k8s时遇到网络问题怎么办
导读:CentOS 部署 Kubernetes 网络问题排查与修复指南 一、快速自检清单 查看节点与系统状态 检查节点是否 Ready:kubectl get nodes;查看系统日志:journalctl -u kubelet -f;必要时...
CentOS 部署 Kubernetes 网络问题排查与修复指南
一、快速自检清单
- 查看节点与系统状态
- 检查节点是否 Ready:kubectl get nodes;查看系统日志:journalctl -u kubelet -f;必要时查看内核日志:dmesg。
- 检查 CNI 与 Pod 网络
- 确认 CNI 已安装并运行:kubectl get pods -n kube-system -l k8s-app=calico(或 kube-flannel、cilium);查看 CNI 配置:ls /etc/cni/net.d/;cat /etc/cni/net.d/10-calico.conflist;若缺失,重装 CNI 包:yum reinstall -y kubernetes-cni。
- 验证基础网络连通
- 节点间连通性:ping ;跨节点 Pod IP 连通性(临时调试 Pod):kubectl run test-$RANDOM --image=busybox:1.36 --restart=Never --rm -it – sh -c ‘ping ’。
- 检查 Service 与 kube-proxy
- Service 是否分配 ClusterIP:kubectl get svc kubernetes;kube-proxy 模式与日志:kubectl logs -n kube-system -l k8s-app=kube-proxy --tail=200。
- 防火墙与端口
- 放行控制面与节点端口(示例):firewall-cmd --permanent --zone=trusted --add-port=6443/tcp;firewall-cmd --permanent --zone=trusted --add-port=10250/tcp;firewall-cmd --reload。
以上步骤覆盖了节点状态、CNI 配置、连通性、Service 与防火墙等最常见的网络故障面。
- 放行控制面与节点端口(示例):firewall-cmd --permanent --zone=trusted --add-port=6443/tcp;firewall-cmd --permanent --zone=trusted --add-port=10250/tcp;firewall-cmd --reload。
二、常见症状与对应修复
- 症状 1:节点 NotReady,kube-flannel Pod CrashLoopBackOff 或 Calico Pod 未就绪
- 可能原因:未安装 CNI、CNI 配置缺失、/etc/cni/net.d 被清空、kubernetes-cni 包异常。
- 修复要点:安装或重装 CNI(如 kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 或 Flannel 官方清单);确认 /etc/cni/net.d/10-calico.conflist 存在且配置正确;必要时 yum reinstall -y kubernetes-cni;重启 kubelet:systemctl restart kubelet。
- 症状 2:Pod 之间跨节点不通
- 可能原因:节点间二层/三层不通、VXLAN/Host-GW 后端配置不当、云厂商安全组/ACL 限制。
- 修复要点:确认节点间 ping 可达;如使用 Flannel,检查 Backend.Type=VXLAN/Host-GW 与 Network=10.244.0.0/16 是否与 kube-controller-manager 的 –pod-network-cidr 一致;在云上放通 8472/UDP(VXLAN) 或相应节点间通信端口。
- 症状 3:Service ClusterIP 访问异常或 kube-proxy 报错
- 可能原因:kube-proxy 未就绪、iptables/ipvs 规则异常、内核参数缺失(如 IPVS conn_reuse_mode)、或 CentOS 8 默认 nftables 与容器 iptables 视图不一致 导致规则不同步。
- 修复要点:查看 kube-proxy 日志与模式(iptables/ipvs);在 CentOS 8 上统一使用 iptables 后端(如启用 nftables 兼容或确保 kube-proxy 与宿主机使用同一 iptables 视图);必要时升级 kube-proxy 版本修复历史缺陷;检查并调优内核参数(如 net.ipv4.vs.conn_reuse_mode)。
- 症状 4:网络“能用但很慢”
- 可能原因:内核过旧(如 CentOS 7.9 的 3.10 内核)导致 IPVS/eBPF/Overlay(VXLAN) 性能差、conntrack 瓶颈。
- 修复要点:升级内核至 5.4+(推荐 5.10+ 或 6.x LTS),可显著改善 IPVS、eBPF、VXLAN 与 conntrack 表现;验证:uname -r。
以上对应关系中,CNI 缺失/配置错误、Service/kube-proxy 异常与内核/系统兼容性问题是最常见根因。
三、CentOS 7 与内核兼容性的关键建议
- 对于 Kubernetes 1.28+(尤其是 1.31),不建议在 CentOS 7.9 的 3.10 内核上运行:会出现 IPVS conn_reuse_mode 等高级特性不可用、eBPF 支持残缺、VXLAN 开销大、conntrack 瓶颈,表现为网络性能“龟速”或偶发卡顿。
- 推荐方案
- 原地升级内核(最快):启用 ELRepo,安装 kernel-lt(5.4) 或 kernel-ml(6.x),设置默认启动并重启,验证 uname -r。
- 系统迁移(更稳):迁至 Rocky Linux 9 / AlmaLinux 9 / Ubuntu 22.04 等较新发行版,默认内核与驱动更适配现代 K8s 与 CNI。
- 影响与收益
- 升级后 IPVS 连接复用、VXLAN 封装、eBPF 数据面优化与 conntrack 效率均会提升,实测可从 百 Kbps~几 Mbps 恢复到 数百 Mbps~Gbps 级别。
该建议来自在 CentOS 7.9 + K8s 1.31 场景下的性能回溯与对比验证。
- 升级后 IPVS 连接复用、VXLAN 封装、eBPF 数据面优化与 conntrack 效率均会提升,实测可从 百 Kbps~几 Mbps 恢复到 数百 Mbps~Gbps 级别。
四、标准化修复流程与命令清单
- 步骤 1:校准基础环境
- 确认版本与内核:kubectl version --short;uname -r;检查 kubelet:systemctl status kubelet;journalctl -u kubelet -f。
- 步骤 2:安装或恢复 CNI
- 选择插件并部署(示例):
- Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
- Flannel:kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.15.1/Documentation/kube-flannel.yml
- 若 /etc/cni/net.d/ 为空或异常:重装 kubernetes-cni 并重启 kubelet。
- 选择插件并部署(示例):
- 步骤 3:放行防火墙与节点通信
- 示例:firewall-cmd --permanent --zone=trusted --add-port=6443/tcp;firewall-cmd --permanent --zone=trusted --add-port=10250/tcp;firewall-cmd --reload。
- 步骤 4:验证与回归测试
- 节点 Ready:kubectl get nodes;跨节点 Pod 连通性(见上);Service 访问:kubectl run test-$RANDOM --image=busybox:1.36 --restart=Never --rm -it – sh -c ‘wget -qO- http://:’。
- 步骤 5:性能与内核优化(如仍慢)
- 升级内核至 5.4+ / 6.x LTS;验证 uname -r;观察 kube-proxy 日志是否仍有 conn_reuse_mode 等报错;必要时调整 kube-proxy 模式与内核网络参数。
以上流程覆盖从 CNI 恢复、防火墙放行到连通性验证与内核优化的完整闭环。
- 升级内核至 5.4+ / 6.x LTS;验证 uname -r;观察 kube-proxy 日志是否仍有 conn_reuse_mode 等报错;必要时调整 kube-proxy 模式与内核网络参数。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos部署k8s时遇到网络问题怎么办
本文地址: https://pptw.com/jishu/788260.html
