ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Kubeasz 实战:K8s 网络插件选型调优,5 个高频坑一次讲清

Kubeasz 实战:K8s 网络插件选型调优,5 个高频坑一次讲清 Kubeasz 实战K8s 网络插件选型调优5 个高频坑一次讲清【免费下载链接】kubeasz使用Ansible脚本安装K8S集群介绍组件交互原理方便直接不受国内网络环境影响项目地址: https://gitcode.com/GitHub_Trending/ku/kubeasz用 Kubeasz 装完 K8s 集群后你有没有遇到过这种场面跨节点的 Pod 通信频繁超时业务方追着问响应为什么变慢排查一圈发现不是应用的问题而是网络插件没选对、参数没配对。我干运维这几年这类事故九成出在装完集群后那半小时的随手一配。这篇文章不做大白话科普直接给你一张对比矩阵锁定方向把 5 种 K8s 网络插件拆成场景卡片再走一遍从改文件到验证连通性的完整操作线最后附上 5 个我真实踩过的坑。30 秒选型K8s 网络插件对比矩阵怎么看先别急着装看这里。把 5 个插件放进同一张表里你只需要回答三个问题集群多大要不要策略和可观测团队有没有人懂 BGP/OVN插件适用规模延迟表现功能丰富度运维复杂度Calico3 台到数百台开 RR 后同二层直连最好跨网段走隧道网络策略 路由反射器中Cilium中大型eBPF 内核态转发抖动小L7 策略 Hubble 流量可视化偏高有内核门槛Flannel10~50 台测试集群取决于后端vxlan 有封装开销几乎没有策略能力最低Kube-OVN中大型企业场景取决于 OVN 配置子网、静态 IP、QoS、命名空间隔离高Kube-router小型一体化环境直连路由路由 网络策略二合一低读表方法规模小于 20 台且只是验证业务直接 Flannel正式生产环境拿不准就 Calico对延迟和抓包排障有刚需再上 Cilium网络隔离要求复杂多租户子网、QoS 限速才考虑 Kube-OVN。场景卡片5 种 K8s 网络插件各管什么活儿Calico 适合什么场景BGP 路由反射器什么时候开维度说明适用场景生产环境默认项同二层 跨子网混合网络核心优势节点间靠 BGP 交换路由同二层可免封装直连内建路由反射器节点越多越划算关键配置项CALICO_ENABLE_OVERLAY、CALICO_NETWORKING_BACKEND、CALICO_RR_ENABLED适用规模小集群到几百台50 台以上建议开 RR实测下来 Calico 的默认配置bird后端 Always隧道在大多数环境下都能跑通是装完就不用想的选择。Cilium 的 eBPF 延迟到底低在哪内核先看什么维度说明适用场景延迟敏感、需要 L7 策略或流量可视化排障核心优势转发逻辑跑在内核态 eBPF 程序里少走用户态绕行自带 Hubble能像抓包一样看策略命中关键配置项CLUSTER_NETWORKcilium、cilium_hubble_enabled、cilium_connectivity_check适用规模中大型集群⚠️ 内核必须 ≥ 4.9.17这是硬门槛延迟低在哪一句话讲清传统插件的规则匹配和用户态处理链路更长eBPF 把策略和转发直接挂进内核数据路径规则再多也不会线性变慢。Flannel 测试环境怎么装vxlan 和 host-gw 怎么选维度说明适用场景临时测试、验证业务不打算长期养核心优势配置最少一个 DaemonSet 拉起即通host-gw后端在同二层时不封装关键配置项FLANNEL_BACKENDvxlan/host-gw、NODE_CIDR_LEN适用规模10~50 台测试集群别指望它做策略选型口径所有节点在同一二层就用host-gw省封装开销跨机房一律vxlan。它没有网络策略别拿它扛生产。Kube-OVN 能解决哪些别的插件做不了的事维度说明适用场景多租户隔离、按命名空间划子网、Pod 需要静态 IP 或 QoS 限速核心优势引入 OVS/OVN 虚拟交换机子网跟着 namespace 走Pod IP 可对外直接暴露关键配置项CLUSTER_NETWORKkube-ovn、kube_ovn_ver适用规模中大型企业场景运维复杂度是五者里最高的Kube-router 一体化方案省掉哪个组件维度说明适用场景小型环境想少养组件又需要网络策略核心优势一个 DaemonSet 同时管路由和网络策略新集群里服务代理由 kube-proxy 的 IPVS 接管关键配置项OVERLAY_TYPE、FIREWALL_ENABLE适用规模小型集群公有云注意保留 ipinip 封装端到端操作线改哪个文件 → 设什么参数 → 跑什么命令第 1 步hosts 和 config.yml 里改哪些参数插件开关在集群目录的hosts文件里模板参考 example/hosts.allinone# /etc/kubeasz/clusters/集群名/hosts CLUSTER_NETWORKcalico细调参数在config.yml示例见 example/config.yml以 Calico 为例# /etc/kubeasz/clusters/集群名/config.yml CALICO_NETWORKING_BACKEND: bird CALICO_ENABLE_OVERLAY: Always CALICO_RR_ENABLED: false三个参数的含义bird是 BGP 直连后端少数云不支持 IPinIP 时换vxlanAlways表示跨节点一律走隧道最省心RR_ENABLED留给 50 台以上的大集群见文末避坑清单。第 2 步一条命令装完网络插件网络插件对应剧本是 playbooks/06.network.ymlansible-playbook -i /etc/kubeasz/clusters/集群名/hosts playbooks/06.network.yml如果集群还没装完也可以整体执行./ezctl setup 集群名 all一次到位Cilium 和 Kube-OVN 这类需要额外镜像的记得先用./ezdown -X 插件名拉镜像。第 3 步怎么验证跨节点连通性装完别只看 Pod 是 Running真正要确认的是跨节点包走得通kubectl run nettest --imagebusybox --replicas3 sleep 36000 kubectl get pod -n default -o wide # 到每台节点 ping 其他节点上的 Pod IP全通才算过再补两招Calico 环境跑calicoctl node status确认每个节点的 BGP 邻居都是upCilium 环境把cilium_connectivity_check: true打开装完会自动跑一套多节点连通性测试。另外 docs/setup/network-plugin/ 下每个插件都有独立验证章节包括network-check的周期性连通巡检可以对照自查。装完顺手调的三个参数hosts里把PROXY_MODE设为nftables需内核 ≥ 5.13、nft ≥ 1.0规则匹配比 iptables 更省 CPU这是 Service 转发链路最直接的提速点。config.yml中ENABLE_LOCAL_DNS_CACHE: true保持默认开启节点本地 DNS 缓存能省掉跨节点查域名的往返。NODE_CIDR_LEN默认 24每节点约 250 个 Pod IP单节点 Pod 密度高再调小掩码内核 sysctl 参数 Kubeasz 的 roles/prepare/ 已经代写了不用手动碰。避坑清单5 个高频错误配置及正确做法⚠️主机名带大写或集群内重复错误现象calico-node反复重启calicoctl node status里缺邻居部分节点间的 Pod 互不通。 正确做法Calico 用主机名当节点名重名会在 etcd 里互相覆盖导致 BGP 邻居建不起来。主机名保持全小写、集群内唯一用 Kubeasz 部署时检查hosts里的k8s_nodename参数。⚠️公有云把 overlay 设成 Never错误现象同可用区正常跨子网 Pod 通信周期性超时。 正确做法CALICO_ENABLE_OVERLAY: Never依赖 underlay 直连公有云节点间通常路由不通。公有云优先Always或混合用CrossSubnet私有云同一二层才用Never省封装。⚠️50 台以上集群没开路由反射器错误现象大集群里 calico-node CPU 偏高扩容加节点时 BGP 邻居建立缓慢甚至闪断。 正确做法没开 RR 时节点间是全互联连接数随节点数平方增长。设置CALICO_RR_ENABLED: true并用CALICO_RR_NODES指定 2~3 台 RR 节点重跑 06 剧本即可手动配置过程见 calico-bgp-rr.md。⚠️内核低于 4.9.17 就装 Cilium错误现象cilium Pod 起不来或一直不 Ready安装卡在等待步骤。 正确做法eBPF 程序依赖新内核能力装之前先逐台uname -r确认版本不够就先升级内核再跑 06别指望装完再补救。⚠️CLUSTER_CIDR / SERVICE_CIDR 和节点网段撞车错误现象装完发现部分节点上的 Pod 无法被外部访问或整个集群和现有 VLAN 段冲突。 正确做法规划阶段就保证节点、Pod、Service 三段互不重叠参考 example/hosts.allinone 里的示例段节点192.168.x、Pod172.20.0.0/16、Service10.68.0.0/16三套互斥的写法。 各插件的完整配置说明在 docs/setup/network-plugin/ 目录排查连通性问题时配合network-check用效果最好。【免费下载链接】kubeasz使用Ansible脚本安装K8S集群介绍组件交互原理方便直接不受国内网络环境影响项目地址: https://gitcode.com/GitHub_Trending/ku/kubeasz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表