Calico的工作原理以及网络模式
创作时间:
作者:
@小白创作中心
Calico的工作原理以及网络模式
引用
1
来源
1.
https://www.cnblogs.com/leojazz/p/18694718
Calico作为CNCF毕业项目,凭借其高性能、零信任安全和多云兼容性,已成为企业级Kubernetes网络的事实标准。本文将深入剖析Calico的核心原理、网络模式及生产环境最佳实践。
一、Calico架构与核心组件
1.1 核心组件协作
(注:Calico官方架构图)
组件 | 角色说明 |
---|---|
Felix | 节点代理,负责配置路由、ACL规则,同步网络策略到本地 iptables/eBPF |
BIRD | BGP客户端,广播节点路由信息,实现跨节点通信 |
Typha | 大规模集群中降低 API Server 负载的代理层(可选组件) |
CNI插件 | 集成 Kubernetes CNI 标准,管理 Pod 网络命名空间和虚拟设备 |
Confd | 动态生成 BIRD 配置文件(旧版本中使用) |
1.2 数据流示例
# Pod A (Node1) -> Pod B (Node2) 的通信流程
1. Pod A 发送报文到目标 IP(Pod B)
2. Node1 根据路由表确定下一跳为 Node2 的物理接口 IP
3. 报文通过物理网络直接到达 Node2
4. Node2 根据路由表将报文转发到 Pod B 的 veth 设备
二、Calico工作原理详解
2.1 节点网络配置
- 路由表管理 :每个节点维护
/etc/calico/calico-node
路由表,记录集群所有 Pod CIDR 信息 - ARP 代理 :通过
proxy_arp
设置解决跨节点 ARP 请求问题 - Veth Pair :每个 Pod 通过
veth
对连接到宿主机的网络命名空间
2.2 BGP路由分发
# 查看节点 BGP 邻居状态
calicoctl node status
# 示例输出:
+---+---+---+---+---+
| NODE NAME | PEER IP | STATE | SINCE | INFO |
+---+---+---+---+---+
| node-01 | 192.168.0.254 | up | 09:30:00 | Established |
| node-02 | 192.168.0.253 | up | 09:30:05 | Established |
+---+---+---+---+---+
2.3 网络策略实施
示例策略 :禁止 default 命名空间的 Pod 访问数据库服务
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: deny-db-access
namespace: default
spec:
selector: role == 'db'
ingress:
- action: Deny
source:
namespaceSelector: name == 'default'
egress:
- action: Allow
三、Calico网络模式对比
模式 | 协议 | 性能 | 网络要求 | 典型场景 |
---|---|---|---|---|
BGP模式 | L3 BGP | ★★★★ | 节点间 L3 可达 | 本地数据中心 |
IP-in-IP | L3隧道 | ★★★☆ | 跨子网 | 跨可用区云环境 |
VXLAN模式 | L2覆盖 | ★★☆☆ | 需要 UDP 4789 端口开放 | 传统网络环境 |
WireGuard模式 | 加密隧道 | ★★☆☆ | 需要内核支持 | 跨公网加密通信(3.15+版本) |
四、生产环境最佳实践
4.1 安装优化
# 使用 Tigera Operator 安装(推荐)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml
4.2 IP地址管理
# 自定义 IP 池配置示例
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: custom-ippool
spec:
cidr: 172.16.0.0/20
blockSize: 26
natOutgoing: true
nodeSelector: !all()
4.3 性能调优
启用 eBPF 数据平面 :
calicoctl patch kubecontrollersconfiguration default --patch='{"spec": {"controllers": {"node": {"hostEndpoint": {"autoCreate": "Enabled"}}}}}'
调整 BGP 参数 :
apiVersion: projectcalico.org/v3 kind: BGPConfiguration metadata: name: default spec: logSeverityScreen: Info nodeToNodeMeshEnabled: true asNumber: 64512
五、监控与故障排查
5.1 监控指标
- 关键指标 :
felix_resync_state
:数据同步状态bgp_peer_up
:BGP 邻居状态iptables_chain_update_seconds
:策略更新时间
5.2 常见问题排查
问题 :Pod 跨节点通信失败
排查步骤 :
- 检查节点间网络连通性
- 验证 BGP 会话状态:
calicoctl node status
- 查看路由表:
ip route show table all
- 检查网络策略:
calicoctl get networkpolicy -A
六、Calico的适用场景
- 金融行业 :满足 PCI-DSS 要求的网络隔离
- AI/ML 训练 :需要 RDMA 高性能网络支持
- 混合云架构 :跨云厂商/数据中心的统一网络策略
- 边缘计算 :轻量级网络方案(Calico 3.15+ 支持边缘节点)
结语
Calico 通过创新的 BGP 路由分发和动态策略执行机制,在 Kubernetes 生态中建立了网络与安全的黄金标准。无论是本地数据中心还是多云环境,合理选择网络模式并结合 eBPF 等高级特性,都能构建出既高效又安全的云原生网络架构。
热门推荐
T/ZZB 1260-2019 橘子罐头 - 可溶性固形物含量的检验
股市风向标 | 常山北明涨停,机构游资博弈加剧
东汉末年时期的三个大司马分别是谁?
烧心、反酸、胃部不适……对付烧心,这些非处方药超管用,别吃错了
如何举报员工拿回扣犯罪:步骤与方法
父母如何引导孩子正确的表达情绪?记住5个原则,值得父母深思!
质量管理岗位IQC、PQC、FQC、IPQC、OQC到底是什么?
东京23区房价投资图鉴,这些区域值得关注
HR招聘全流程指南:从需求分析到录用通知
安徽国防科技职业学院是全日制吗?
二郎神有哪些厉害的法宝?
2024年灭火剂市场规模分析:灭火剂朝着环保型趋势发展
止损止盈的设置技巧与策略
山西为啥是“面食第一大省”?吃过这8种面条,果然是有真本事的
华为鲲鹏处理器架构详解:从基本概念到子系统解析
民俗恐怖片,为何总能成为爆款?
类风湿性关节炎患者应避免食用的食物
不限专业可以考的职业资格证书有哪些?
学术借鉴与抄袭的界限在哪儿
水丸怎么服用
如何设置止损位以控制风险?这种设置如何影响投资者的策略?
想入门GIS?2024年小白必看的7本推荐书籍
一文详解A股分红规则(附分红与税率计算方法)
医疗AI领域中GPU集群训练的关键技术与实践经验探究(上)
如何准确计算基本保额?这种保额计算有什么方法?
国内芯片人才紧缺,芯片行业薪酬涨幅预计超50%,应届生年薪高达60万
世界各国海军实力排行:2024年最新排行榜前十名单
舌尖上的秦朝:短短十四年的秦朝饮食文化不容小觑
赣州交通大提速!这三条快速路今天正式通车
送给退休人的15条建议,总结得太高明了!谁看谁服!