【k8s】Calico网络 service ip网络 veth pair BGP

BGP的作用

      在Calico网络中,BIRD和Felix是两个核心组件,它们分别负责不同的任务,共同协作来实现Calico的网络功能。

BIRD

BIRD(BIRD Internet Routing Daemon)是一个开源的动态路由守护进程,用于在Calico中实现BGP路由协议。它的主要作用是与网络中的其他BGP对等体(可以是其他节点的BIRD,也可以是物理网络设备)交换路由信息。

在Calico中,BIRD的作用包括:

  • 从Felix获取本节点上Pod的路由信息。

  • 通过BGP协议将这些路由信息通告给其他节点或路由反射器。

  • 从其他BGP对等体学习路由信息,并更新本地的路由表。

Calico通常在每个节点上运行一个BIRD容器,它负责节点间的路由分发。当节点上的Pod创建或删除时,Felix会更新本地的路由表,然后BIRD会将这些变化通过BGP协议传播出去。

Felix

Felix是Calico的另一个核心组件,它运行在每个节点上,负责管理该节点上的网络接口、路由、ACL(访问控制列表)等。Felix是Calico数据平面的主要组成部分。

Felix的主要职责包括:

  • 管理网络接口:创建、配置和删除veth pair设备,将Pod连接到主机网络。

  • 管理路由:为节点上的每个Pod添加和删除路由规则。

  • 实施网络策略:根据Calico的网络策略配置iptables或IPVS规则,实现Pod之间的访问控制。

  • 报告状态:收集节点上的网络状态信息,并更新到Calico的数据存储(如etcd)中。

协作流程

  1. 当Pod被创建时,Felix会为该Pod创建veth pair,一端在Pod内,另一端在主机上,并为主机端的veth配置IP地址和路由。

  2. Felix然后会更新主机的路由表,添加一条到达Pod IP的路由,指向主机端的veth。

  3. BIRD会监控主机的路由表变化,当发现新的路由时,它通过BGP协议将这些路由通告给其他节点。

  4. 其他节点上的BIRD接收到路由通告后,会更新自己的路由表,从而使得该Pod的IP在其他节点上可达。

同样,当Pod被删除时,Felix会清理相关的网络设备、路由和策略,BIRD则会通知其他节点撤销对应的路由。

总结

  • Felix:负责节点本地的网络设置(接口、路由、策略)。

  • BIRD:负责在节点之间同步路由信息(使用BGP协议)。

     两者协同工作,使得Calico能够为Kubernetes集群提供高性能、可扩展的网络解决方案。

在 Calico 的网络架构中,BIRD 和 Felix 是两个核心组件,它们分工合作,共同实现 Calico 的网络功能。让我详细解释它们的作用和协作关系。

获取pod的IP段

[root@g-master3 ~]# kubectl get nodes -o custom-columns=NAME:.metadata.name,POD-CIDR:.spec.podCIDR
NAME        POD-CIDR
g-master1   172.20.3.0/24
g-master2   172.20.1.0/24
g-master3   172.20.0.0/24

分配者

  • kube-controller-manager 通过 --cluster-cidr 参数管理整个集群的 Pod IP 范围

  • 节点加入时,控制器为其分配一个子网段

在K8s中,BGP的作用:

  1. 通告Pod路由:每个节点通过BGP协议将自己拥有的Pod IP段(PodCIDR)通告给其他节点或网络设备,从而使得Pod的IP在整个集群内(甚至集群外)可达。

  2. 实现Pod跨节点通信:通过BGP学习到的路由,节点可以将发送给其他节点Pod的流量正确转发。

  3. 替代Overlay网络:使用BGP可以直接在底层网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值