首页主机资讯centos部署k8s时遇到网络问题怎么办

centos部署k8s时遇到网络问题怎么办

时间2026-01-21 07:10:03发布访客分类主机资讯浏览1203
导读: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 与防火墙等最常见的网络故障面。

二、常见症状与对应修复

  • 症状 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-GWNetwork=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 场景下的性能回溯与对比验证。

四、标准化修复流程与命令清单

  • 步骤 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 恢复、防火墙放行到连通性验证与内核优化的完整闭环。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos部署k8s时遇到网络问题怎么办
本文地址: https://pptw.com/jishu/788260.html
CentOS安全漏洞Exploit的利用与防范 安装k8s后centos怎么用

游客 回复需填写必要信息