全景剖析阿里云容器网络数据链路(五):Terway ENI-Trunking

本文深入剖析阿里云容器网络Terway ENI-Trunking模式,介绍了如何通过Trunk ENI提升资源密度,以及如何为每个Pod配置独立的安全组和交换机。详细分析了10个典型场景下的数据链路转发,包括同一节点和不同节点间的Pod互访、访问SVC IP的情况。Terway通过VLAN ID实现Pod间流量隔离,提供高可控性和可观测性。理解这些场景有助于优化业务架构,提升云原生网络链路的稳定性。
摘要由CSDN通过智能技术生成

近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的发展和演进中,这必然对客户对云原生网络的可观测性带来了极高的门槛和挑战。为了提高云原生网络的可观测性,同时便于客户和前后线同学增加对业务链路的可读性,ACK产研和AES联合共建,合作开发ack net-exporter和云原生网络数据面可观测性系列,帮助客户和前后线同学了解云原生网络架构体系,简化对云原生网络的可观测性的门槛,优化客户运维和售后同学处理疑难问题的体验 ,提高云原生网络的链路的稳定性。

鸟瞰容器网络,整个容器网络可以分为三个部分:Pod网段,Service网段和Node网段。这三个网络要实现互联互通和访问控制,那么实现的技术原理是什么?整个链路又是什么,限制又是什么呢?Flannel, Terway有啥区别?不同模式下网络性能如何?这些,需要客户在下搭建容器之前,就要依据自己的业务场景进行选择,而搭建完毕后,相关的架构又是无法转变,所以客户需要对每种架构特点要有充分了解。比如下图是个简图,Pod网络既要实现同一个ECS的Pod间的网络互通和控制,又要实现不同ECS Pod间的访问, Pod访问SVC 的后端可能在同一个ECS 也可能是其他ECS,这些在不同模式下,数据链转发模式是不同的,从业务侧表现结果也是不一样的。

本文是[全景剖析容器网络数据链路]第五部分部分,主要介绍Kubernetes Terway ENI-Trunking模式下,数据面链路的转转发链路,一是通过了解不同场景下的数据面转发链路,从而探知客户在不同的场景下访问结果表现的原因,帮助客户进一步优化业务架构;另一方面,通过深入了解转发链路,从而在遇到容器网络抖动时候,客户运维以及阿里云同学可以知道在哪些链路点进行部署观测手动,从而进一步定界问题方向和原因。

Terway ENI-Trunking 模式架构设计

弹性网卡中继Trunk ENI是一种可以绑定到专有网络VPC类型ECS实例上的虚拟网卡。相比弹性网卡ENI,Trunk ENI的实例资源密度明显提升。启用Terway Trunk ENI功能后,指定的Pod将使用Trunk ENI资源。为Pod开启自定义配置是可选功能,默认情况下创建的Pod,未开启Terway Trunk ENI功能,使用的是共享ENI上的IP地址。只有当您主动声明为指定Pod开启自定义配置后,相应的Pod才能使用Pod自定义配置能力,Terway才可以同时使用共享ENI以及Trunk ENI为Pod分配IP。两种模式共享节点最大Pod数量配额,总部署密度和开启前一致。

金融、电信,政府等行业对数据信息安全有着非常严格的数据安全要求,通常,重要的核心数据会放在自建的机房内,并且对访问此数据的客户端有严格的白名单控制,通常会限制具体的IP访问源。业务架构上云时,往往是通过专线,VPN等打通自建机房和云上资源打通,由于传统容器中PodIP 是不固定的,NetworkPolicy 只能在集群内生效,这对客户的白名单设置有了非常大的挑战。ENI 在 Trunk 模式下,可以配置独立的安全组、vSwitch能力,带来更为细化的网络配置能力,提供极具竞争力的容器网络解决方案。

在trunking的命名空间内可以看到相关的pod信息和节点信息,其中pod应用的IP 的网络我们稍后会详细说明

Pod内有只有指向eth0的默认路由,说明Pod访问任何地址段都是从eth0为统一的出入口

那么Pod是如何ECS OS进行通信呢?在OS层面,我们一看到calicxxxx的网卡,可以看到是附属于eth1的,对于节点和Pod的通信连接,这个类似于《全景剖析阿里云容器网络数据链路(三)—— Terway ENIIP》 ,此处不再进行过多说明。通过OS Linux Routing 我们可以看到,所有目的是 Pod IP 的流量都会被转发到Pod对应的calico虚拟往卡上,到这里为止,ECS OS 和Pod的网络命名空间已经建立好完整的出入链路配置了。

让我们把目光聚焦ENI Trunking本身。ENI Truning 是如何实现Pod的交换机和安全组的配置呢?Terway增加一种名为PodNetworking的自定义资源来描述网络配置。您可以创建多个PodNetworking,来规划不同网络平面。创建PodNetworking资源后,Terway将同步网络配置信息,只有status成为Ready后,该网络资源才能对Pod生效。如下图所示,类型为Elastic,只要namespce的标签的符合tryunking:zoneb, 就给pod使用指定的安全组和交换机。

创建Pod时,Pod将通过标签去匹配PodNetworking。如果Pod没有匹配到任何PodNetworking,则Pod将使用默认的共享ENI上的IP。如果Pod有匹配到PodNetworking,则将使用PodNetworking中定义的配置分配ENI。关于Pod标签的相关内容,请参见标签。

Terway会为这类Pod创建相应的名为PodENI的自定义资源,用于跟踪Pod所使用的资源,该资源由Terway管理,您不可修改该资源。如下trunking 命名空间下的centos-59cdc5c9c4-l5vf9 pod匹配了相应的podnetworking设置,被分配了相应的memeber ENI、对应的Trunking ENI,安全组,交换机和被绑定的ECS实例,这样就实现了Pod维度的交换机,安全组的配置和管理。

通过ECS的控制台,我们也可以清楚的看到memenber ENI和Trunking ENI 之间的关系,相应的安全组交换机等等信息。

通过上面的配置,我们了解如何去给每个Pod单独配置交换机,安全组等信息,让每个pod在通过Trunking ENI出ECS后,可以自动走到对应的配置Member ENI 上,让这些配置生效。那么所有的配置其实落到宿主机上都是通过相关的策略实现的,Trunking ENi网卡是如何知道把对应Pod的流量转发到正确的对应的Member ENI上的呢?这其实通过的vlan来实现的。在tc层面可以看到VLAN ID。所以在egress或者ingress的阶段会打上或者去除VLAN ID。

故Terway ENI-Trunking 模式总体可以归纳为:

  • 弹性网卡中继Trunk ENI是一种可以绑定到专有网络VPC类型ECS实例上的虚拟网卡。相比弹性网卡ENI,Trunk ENI的实例资源密度明显提升
  • Terway Trunk ENI支持为每个Pod配置固定IP、独立的虚拟交换机、安全组,能提供精细化流量管理、流量隔离、网络策略配置和IP管理能力。
  • 使用Terway插件,您需要选择较高规格和较新类型的ECS神龙机型,即5代或者6代的8核以上机型,且机型要支持Trunk ENI。更多信息,请参见实例规格族。
  • 单节点所支持的最大Pod数取决于该节点的弹性网卡(ENI)数。共享ENI支持的最大Pod数=(ECS支持的ENI数-1)×单个ENI支持的私有IP数。
  • Pod安全组规则不会应用到同节点Pod间流量及同节点上节点与Pod间流量。如果您需要限制,可以通过NetworkPolicy进行配置。
  • Pod和对应MemeberENI流量对应是通过VLAN ID 来实现的。

Terway ENI-Trunking 模式容器网络数据链路剖析

可以看到由于可以实现Pod维度的安全组,交换机设置,那么宏观上不同链路访问必然更加趋于复杂,我们可以将Terway ENI-TRunking模式下的网络链路大体分为以Pod IP对外提供服务和以SVC对外提供服务两个大的SOP场景,进一步细分,可以归纳为10个不同的小的SOP场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值