三大公有云厂商 Kubernetes 的网络模型

自建 Kubernetes 集群

自建时一般选用 Flannel CNI 网络插件,需要给 Pod 和 Service 分配虚拟网段;节点内的 Pod 互访,直接通过 CNI 网桥在二层进行交互;跨节点之间的 Pod 互访,在 Flannel VxLAN 模式下,通过隧道封装技术来进行网络传输;在 host-gw 模式下,可以直接基于路由的方式,无需封包解包,由于直接将目标 Node 作为下一跳地址,充当网关,所以此模式下要求集群节点必须是二层联通的,不能跨网段。

非集群节点是不能访问集群内部网络,即 Pod 容器网络和 Service 服务网络。一般开发环境为了本地调试,要将本地网络与 Kubernetes 的集群网络打通,可以通过架设 VPN 的方式。

Service 的网络实际就是 kube-proxy 维护的 iptables 规则, 这些规则存在于集群所有节点上,所以从任何一个节点访问 都可以定位到其代理的 Endpoints 列表。ClusterIP 的存在也只是为了找出其代理的 endpoint 地址做 DNAT 目标地址转换。

如果是 NodePort 类型的 Service,流入请求的目标 Pod 地址可能不在当前节点,这时就会做 SNAT 替换数据包的源 IP 地址,当然这里也能通过配置来控制 NodePort 仅将流量转发到当前节点的 Pod,具体可以参看 Service 的外部流量控制文档:https://kubernetes.io/zh-cn/docs/tutorials/services/source-ip/


阿里容器服务 ACK

  1. Flannel

Flannel 是 ACK 的网络插件,使用独立于 VPC 网段的 Pod 的网段分配给 Pod。在 ACK 中,Flannel 插件采用的是阿里云 VPC ,报文经过阿里云 VPC 的路由表直接转发,不需要 Vxlan 等隧道封装技术封装报文,所以比 Flannel 默认的 Vxlan 模式具有更高的通信性能。

差异很清晰,如果选用 ACK Flannel 插件,跨节点通信并没有使用 vxlan 技术,而是通过云上基础产品 VPC 的全局路由来实现。

他通过一个 CCM(Cloud Controller Manager)组件维护 VPC 上 Pod 网段的路由表,来实现 Pod 的跨节点通信。

当集群网络组件为 Flannel 时,CCM 组件负责打通容器与节点间网络,实现容器跨节点通信。CCM 会将节点的 Pod 网段信息写入 VPC 的路由表中,从而实现跨节点的容器通信。该功能无需配置,安装即可使用。

这时 VPC 路由如果收到目的地址是某一个节点 pod 网段的 IP 地址,就会把这个网络包转发到对应的节点上,然后再根据主机的路由表,将其转发到 CNI 网桥上。

笔者公司生产两套集群,一套自建,一套买的阿里云 ACK 托管版本,都是选用的 Flannel CNI 插件。两套集群在同一个 VPC 下,有一天在自建的集群 Pod 中可以直接 ping 通托管集群的 Pod IP,而且在非集群 Node 上(同 VPC)也可以直接 ping 通托管集群的 pod ip,这时去仔细翻了翻 ACK 的文档,才发现 ACK 下的 Flannel 插件没有使用 vxlan 技术,而是基于 VPC 路由转发。

  1. Terway

Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,基于阿里云的弹性网卡(ENI)构建网络,将原生的弹性网卡(ENI)分配给 Pod 实现 Pod 网络。

支持多种模式:

  • VPC:Pod 网段不同于节点的网络的网段,通过 Aliyun VPC 路由表打通不同节点间的容器网络。
  • ENI:容器的网卡是 Aliyun 弹性网卡,Pod 的网段和宿主机的网段是一致的。

在 ENI 模式下,ENI 网络就是从阿里云的 VPC 网络中创建和绑定一个弹性网卡到节点上, 然后 Pod 利用这个弹性网卡和别的网络互通。

Pod 与 Node 都在一个 VPC 网络中,共享相同的 CIDR 网段,Pod 会通过弹性网卡资源直接分配 VPC 中的 IP 地址,不需要额外指定虚拟 Pod 网段,而且集群中所有的 Pod 在同一个 VPC 子网中。

详情可参看 Terway 的设计文档:https://github.com/AliyunContainerService/terway/blob/main/docs/design.md

华为云容器引擎 CCE

  1. 容器隧道网络模型

这种与自建时 Flannel 网络插件 vxlan 模式一样,在节点网络基础上通过隧道封装,构建的独立于节点网络平面的容器网络平面,CCE 集群容器隧道网络使用的封装协议也是 VXLAN。

  1. VPC 网络

此模式与 ACK 下的 Flannel 插件类似,都是利用 VPC 的路由转发能力来实现跨节点通信。

VPC 网络采用 VPC 路由方式与底层网络深度整合,由于没有隧道封装的消耗,容器网络性能相对于容器隧道网络有一定优势。VPC 网络集群由于 VPC 路由中配置有容器网段与节点 IP 的路由,可以支持集群外直接访问容器实例等特殊场景。

  1. 云原生网络2.0

云原生网络2.0是自研的新一代容器网络模型,深度整合了虚拟私有云VPC的弹性网卡(Elastic Network Interface,简称ENI)和辅助弹性网卡(Sub Network Interface,简称Sub-ENI)的能力,直接从 VPC 网段内分配容器 IP 地址,支持ELB直通容器,绑定安全组,绑定弹性公网IP,享有高性能。

这里和 ACK 的 Terway 类似,利用弹性网卡,直接从 VPC 划分 IP 地址给容器。

与传统模式的通信区别:

  • 节点内 Pod 间通信:直接通过 VPC 的弹性网卡/弹性辅助网卡进行流量转发。
  • 跨节点Pod间通信:直接通过 VPC 的弹性网卡/弹性辅助网卡进行流量转发。

腾讯容器服务 TKE

  1. GlobalRouter 模式

GlobalRouter 网络模式是容器服务 TKE 基于底层私有网络 VPC 的全局路由能力,实现了容器网络和 VPC 互访的路由策略。该网络模式特征包含以下几点:

  • 容器路由直接通过 VPC。
  • 容器与节点分布在同一网络平面。
  • 容器网段分配灵活,容器 IP 段不占用 VPC 的其他网段。

看完描述,和 ACK 的 Flannel 或者 Terway 的 VPC 模式,以及 CCE 的 VPC 网络模式,提供的功能都是一样的,甚至描述读下来都是一模一样的。

  1. VPC-CNI 模式

与 ACK Terway 的 ENI 模式,CCE 的云原生网络2.0模式一样,基于弹性网卡,直接从 VPC 分配 IP 给容器。

VPC-CNI 模式是容器服务 TKE 基于 CNI 和 VPC 弹性网卡实现的容器网络能力。
其中 VPC-CNI 模式分为共享网卡模式和独占网卡模式,两种网络模式适用于不同的场景。您可以根据业务需要选择不同的网络模式。

  • 共享网卡模式:Pod 共享一张弹性网卡,IPAMD 组件为弹性网卡申请多个 IP 给到不同的 Pod。
  • 独占网卡模式:每个 Pod 有独立的弹性网卡,性能更高。受机型影响,不同节点可使用的弹性网卡数量有限,单节点 Pod 密度更低。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容