深入容器之构建大型容器网络

好未来技术团队出品, 专注于容器底层基础设施建设

背景介绍

构建一个大型混合云容器网络,首先需要考虑的是性能问题,还有容器网络架构是不是经过大规模验证,云厂商是不是有类似方案的选择,如何设计一个能支撑 5K 节点的容器网络呢?其实经过大规模验证的容器网络组件屈指可数,其中大名鼎鼎的 cilium 公开数据显示支持过单集群 5k node 规模,各大云厂商齐头并进支持 cilium ebpf。

本文将包括如下几部分:

  • Kubernetes Pod 网络概览
  • Kubernetes Service 网络概览
  • 构建一个大型容器网络

阅读本文你将了解到我司容器网络的进化路线,从容器小集群成长为大集群的新一代容器网络架构;您还将发现老容器集群潜在的网络架构缺陷,除旧迎新恒久不变,一代更比一代强。

『深入容器』系列文章第一篇,请收藏与关注系列文章,欢迎加入我们。

1、Kubernetes Pod 网络概览

在使用 Kubernetes 编排应用时,您必须改变对应用和其主机的网络的思维方式。使用 Kubernetes 时,您需要考虑的是 Pod、Service 和外部客户端的通信方式,而不是主机或虚拟机的连接方式。
Kubernetes 的高级软件定义网络 (SDN) 支持在同一区域级集群中的不同地区之间路由和转发 Pod、Service、Node 的数据包。

IP 地址相关的术语
Kubernetes 网络模型在很大程度上依赖于 IP 地址。Service、Pod、容器和 Node 使用 IP 地址和端口进行通信。Kubernetes 提供不同类型的负载均衡,用于将流量定向到正确的 Pod。

相关术语:

  • ClusterIP:分配给 Service 的 IP 地址,此地址会在 Service 的生命周期内保持不变
  • Pod IP:分配给 Pod 的 IP 地址,大部分情况生命周期随 Pod 的销毁而终止
  • Node IP:分配给节点的 IP 地址

几种经典容器网络模式

隧道封包模式: VxLan/IPIP/GRE ,通过tunnel隧道封包建立overlay 网络,实现Pod到Pod的通信。
vxlan.png

路由模式:通过映射目标容器网段和主机IP的关系,Pod 之间的通信数据包通过路由表转发到相应节点上。
route.png

2、Kubernetes Service 网络概览

Kubernetes 的 Service 到底是个啥 ?其实 Kubernetes 的 Service 主要解决的是 Pod IP 短生命周期带来的问题,Service clutserIP 就是 node side Loadbalancer。

需要思考的问题

  • 当一个应用拥有多个 Pod 时如何去做负载均衡
  • 会话保持如何去处理
  • 某个容器销毁后短生命周期的 IP 变更如何去处理

下图显示了 Service 负载均衡的不同实现性能对比(数据来源于阿里云容器团队)

2.1、iptables 与 IPVS 的实现

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值