容器网络:Calico 网络插件原理与跨节点通信配置
实现节点间路由自动分发,无需传统 Overlay 网络(如 VXLAN)的封装开销。(需 Linux 4.18+ 内核)是目标节点 Pod CIDR,的容器网络方案,其核心是通过。当节点位于不同子网时,需配置。禁用(要求节点间二层可达)。:Calico 默认使用。封装跨子网流量,可通过。Calico 是一种基于。
Calico 网络插件原理与跨节点通信配置
一、Calico 核心原理
Calico 是一种基于三层路由的容器网络方案,其核心是通过 BGP(边界网关协议) 实现节点间路由自动分发,无需传统 Overlay 网络(如 VXLAN)的封装开销。关键组件如下:
-
Felix
运行在每个节点上的守护进程,负责:- 配置本地路由表(
route) - 管理 ACL 规则(通过
iptables/eBPF) - 汇报节点状态至 etcd/Kubernetes API
- 配置本地路由表(
-
BIRD
BGP 客户端,负责:- 与其他节点的 BIRD 交换路由信息
- 将本节点 Pod CIDR 宣告至集群
-
数据平面工作流
跨节点通信流程(以 Pod A → Pod B 为例):graph LR A[Pod A] -->|1. 查路由表| B[Node1 路由表] B -->|2. 下一跳为 Node2 IP| C[Node1 物理网卡] C -->|3. 通过底层网络| D[Node2 物理网卡] D -->|4. 查路由表| E[Pod B]
二、跨节点通信配置
步骤 1:安装 Calico
通过 Kubernetes Manifest 部署(以 v3.25 为例):
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
步骤 2:验证基础配置
-
检查节点路由表
在任意节点执行:ip route show | grep calico # 示例输出:10.244.1.0/24 via 192.168.0.2 dev eth0其中
10.244.1.0/24是目标节点 Pod CIDR,192.168.0.2是目标节点 IP。 -
确认 BGP 邻居状态
calicoctl node status # 输出应显示所有节点的 BGP 会话为 "Established"
步骤 3:关键调优场景
场景 1:跨子网通信
当节点位于不同子网时,需配置 BGP 路由反射器(Route Reflector):
- 部署反射器(选择 3 个节点):
apiVersion: projectcalico.org/v3 kind: BGPConfiguration metadata: name: default spec: logSeverityScreen: Info nodeToNodeMeshEnabled: false # 关闭全互联模式 serviceClusterIPs: - cidr: 10.96.0.0/12 - 标记路由反射器节点:
calicoctl patch node k8s-node-1 -p '{"spec": {"bgp": {"routeReflectorClusterID": "224.0.0.1"}}}'
场景 2:策略控制
通过 NetworkPolicy 实现跨节点 ACL:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-cross-node
spec:
selector: role == 'db'
ingress:
- action: Allow
source:
namespaceSelector: project == 'prod'
egress:
- action: Allow
destination:
ports: [5432]
三、性能优化建议
-
启用 eBPF 数据平面(需 Linux 4.18+ 内核)
替换默认iptables以提升吞吐量:calicoctl patch kubecontrollers configuration --patch='{"spec": {"controllers": {"node": {"hostEndpoint": {"autoCreate": "Disabled"}}}}}' calicoctl patch installation.operator.tigera.io default --type merge -p '{"spec":{"calicoNetwork":{"linuxDataplane":"eBPF"}}}' -
MTU 配置
避免物理网络 MTU 小于 Pod 网络:apiVersion: operator.tigera.io/v1 kind: Installation metadata: name: default spec: calicoNetwork: mtu: 1440 # 根据底层网络调整
四、故障排查命令
| 问题类型 | 诊断命令 |
|---|---|
| BGP 邻居异常 | calicoctl node status |
| 跨节点路由缺失 | ip route get <目标PodIP> |
| 策略未生效 | calicoctl get networkpolicy -o yaml |
| 数据包丢弃分析 | calicoctl diags 收集日志 |
注意:Calico 默认使用
IP-in-IP封装跨子网流量,可通过ipipMode: Never禁用(要求节点间二层可达)。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)