kubernetes网络插件选型需结合集群规模、安全需求与基础设施:flannel适合中小规模测试环境,calico适用于中大型生产环境并支持强网络策略,cilium基于ebpf提供高性能与l7策略,三者在性能、安全、运维复杂度上各有取舍。

配置 Kubernetes 集群的网络插件是集群初始化后最关键的一步,直接影响 Pod 通信、服务发现和网络策略生效。它不是“装完就跑”,而是需要结合集群规模、安全需求和基础设施选型来决策和落地。
明确网络插件的作用与选型依据
Kubernetes 本身不提供网络实现,依赖 CNI(Container Network Interface)插件完成底层网络构建。选择前需确认三点:
- 规模与性能:中小集群(
- 基础设施兼容性:公有云环境(如 AWS EKS、阿里云 ACK)通常预集成 VPC 原生路由方案,Flannel 或 Calico 的 VXLAN 模式更稳妥;裸金属或混合云若支持 BGP,则 Calico 的纯三层模式能减少封装开销。
- 运维复杂度:Flannel 配置极少,适合快速验证;Calico 和 Cilium 功能丰富但参数多,建议通过 Helm 管理而非直接修改 manifest。
以 Calico 为例完成标准部署
Calico 是生产环境中最广泛采用的插件之一,部署流程清晰且可扩展性强:
- 执行安装命令(使用官方最新稳定版):
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml - 检查核心组件状态:
kubectl get pods -n kube-system -l k8s-app=calico-node,确保所有节点上的 calico-node 处于 Running 状态。 - 验证基础连通性:启动一个临时 busybox Pod,尝试 ping 同一命名空间下另一 Pod 的 IP 地址,确认跨节点通信正常。
- 如需定制 CIDR 或封装方式,应在安装前修改 manifest 中的
Installation资源(Calico Operator 模式)或 ConfigMap(传统模式),例如将默认 pod CIDR 改为10.244.0.0/16并启用 VXLAN 跨子网模式。
以 Cilium 为例启用高级能力
Cilium 依赖 eBPF,更适合追求性能与深度可观测性的场景:
- 推荐使用 Helm 安装以获得良好可维护性:
helm repo add cilium https://helm.cilium.io/ && helm install cilium cilium/cilium --namespace kube-system --set hubble.enabled=true --set hubble.metrics.enabled="{dns,tcp,flow,icmp,drop}" - 安装后启用 Hubble UI 可视化流量:
kubectl port-forward -n kube-system svc/hubble-ui --address 0.0.0.0 12000:80,访问http://localhost:12000查看实时连接图谱。 - Cilium 默认启用 L3/L4 策略,NetworkPolicy 生效无需额外配置;若需 L7(如 HTTP 路径级)控制,需开启
enable-k8s-event-handover并部署 CiliumClusterwideNetworkPolicy。
验证与后续配置要点
插件部署成功只是起点,还需验证关键行为是否符合预期:
- Pod IP 可达性:任意两个 Pod 应能直接用对方 IP 通信(如 curl、telnet),不经过 NAT。
- Service 访问正常:ClusterIP 类型 Service 必须能在集群内任意节点通过该 IP 访问,且负载均衡生效。
-
NetworkPolicy 生效:部署一个 default-deny 策略后,未显式放行的流量应被阻断,可通过
curl测试验证。 -
日志与指标接入:Calico 日志位于
/var/log/calico/,Cilium 可通过cilium status和 Prometheus 指标(如cilium_network_policy_allowed_total)监控策略匹配情况。









