5分钟搞懂 k8s 网络插件:Flannel vs Calico
k8s 集群搭建好了,Pod 之间怎么互相通信?这时候就需要网络插件。
主流有两个:Flannel 和 Calico。今天用大白话讲讲它们各自是怎么工作的。
Flannel 的思路很简单:给每个 Pod 分配一个 IP,然后想办法让这些 IP 能互相访问。
具体怎么做?它在每个节点上创建了一张虚拟网卡,所有 Pod 的流量都先发送到这张网卡,再通过一种叫 VXLAN 的协议发送到目标节点。
VXLAN 可以理解为”隧道”。就像你寄快递,快递员在包裹外头再包一层箱子,写上目的地,虽然看不见里面是什么,但能帮你送到。
配置简单,几行命令就能跑起来。
Calico 不走”套箱子”这套,直接用路由表。
每个节点之间会互相学习路由。Pod A 到 Pod B 怎么走,直接写在路由表里。像我们正常上网一样,IP 对 IP,直达。
Calico 还用了 BGP 协议。这本来是互联网骨干网用的,自动学习路由,收敛快,适合大规模集群。
而且 Calico 还能做网络策略,比如限制某些 Pod 只能访问指定的服务。
10 台节点以下,Flannel 够用了。几十上百台,或者需要做访问控制,上 Calico。
两个都是成熟方案,没有绝对好坏。
▼ 点击关注下方公众号 ▼
▲ 一起探索运维之道 ▲
作者介绍:
我是老卢,一个在运维领域摸爬滚打了七年的90后,专注 k8s、DevOps、云原生、AIOps 技术。白天搬砖踩坑,晚上码字分享。相信技术改变生活,坚持输出有温度的文章。
夜雨聆风