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)中。
协作流程
-
当Pod被创建时,Felix会为该Pod创建veth pair,一端在Pod内,另一端在主机上,并为主机端的veth配置IP地址和路由。
-
Felix然后会更新主机的路由表,添加一条到达Pod IP的路由,指向主机端的veth。
-
BIRD会监控主机的路由表变化,当发现新的路由时,它通过BGP协议将这些路由通告给其他节点。
-
其他节点上的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的作用:
-
通告Pod路由:每个节点通过BGP协议将自己拥有的Pod IP段(PodCIDR)通告给其他节点或网络设备,从而使得Pod的IP在整个集群内(甚至集群外)可达。
-
实现Pod跨节点通信:通过BGP学习到的路由,节点可以将发送给其他节点Pod的流量正确转发。
-
替代Overlay网络:使用BGP可以直接在底层网


1385

被折叠的 条评论
为什么被折叠?



