全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:使用Terway网络插件实现Kubernetes集群内Pod的网络互通

更新时间:Mar 15, 2024

Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。您可以通过使用Terway网络插件实现Kubernetes集群内部Pod的网络互通。

使用限制

  • 以下功能正在公测中,如需使用请先在配额平台提交申请。

    • IPv6双栈功能

    • Trunk ENI支持

    • Pod独占弹性网卡

    • 控制台的方式的NetworkPolicy支持

      说明

      如果您使用的是命令行方式的NetworkPolicy支持,则无需提交申请。

  • 仅支持在集群创建阶段选择网络插件类型(Terway和Flannel),集群创建后不支持修改。

  • Terway会接管Terway网络集群节点上eth0之外的弹性网卡用于配置Pod网络,因此不能手动配置额外的弹性网卡。如果您需要自行管理部分弹性网卡,请参见为弹性网卡(ENI)配置白名单

重要
  • 如果您在ACK集群中已使用Terway或Flannel插件,无需再额外安装其他CNI插件(如Cilium),因为一个Kubernetes集群通常只使用一个CNI插件来管理其网络层。关于Terway插件的版本变更记录,请参见Terway

  • 每个ECS实例对最大ENI数量和可以拥有的IP数量都有限制,这些限制可能会影响您可以在节点上运行的Pod数量。因此,在设计和规划您的ACK集群时,请充分考虑需要选择的ECS实例规格。关于Terway的实例规格,请参见实例规格族

费用说明

开启Terway或Flannel插件不会产生额外的费用,但使用插件可能会涉及到一些基础资源的消耗和管理,使用这些资源可能会产生费用。关于ACK的云产品资源计费信息,请参见云产品资源计费

Terway与Flannel对比

在创建集群时,ACK提供Terway和Flannel两种网络插件:

对比项

Terway

Flannel

插件来源

阿里云自研的网络插件,专门为ACK优化。

阿里云维护的Flannel CNI插件。

网络性能

直接将阿里云的弹性网卡(ENI)分配给容器,Pod地址即为VPC中的地址,无NAT损耗。支持独占ENI模式。

配合阿里云VPC路由,Pod地址为虚拟地址,存在NAT转换损耗。

安全

支持使用网络策略Network Policy,可以定义复杂的容器间访问控制。

不支持使用网络策略Network Policy。

地址管理

无需按节点分配地址段,随用随分配,地址不浪费。支持为Pod配置固定IP及独立虚拟交换机、安全组。

节点维度划分地址段,大规模集群中地址浪费较多。

SLB

SLB后端直接对接Pod,支持业务无中断升级。

SLB后端不能直接对接Pod,需要通过NodePort转发。

综上对比,如果您需要提供高性能的网络解决方案,如网络策略和带宽管理,或者希望避免IP地址浪费,推荐使用Terway插件;如果您仅需要提供简单的容器网络体验,不需要使用网络策略(Network Policy)和细密的网络控制,可以选择Flannel。

关于Terway和Flannel插件的更多对比信息,请参见ACK常见网络能力一览表

Terway网络插件介绍

Terway网络插件是ACK自研的网络插件,将原生的弹性网卡(ENI)分配给Pod,实现Pod网络互联,支持基于Kubernetes标准的网络策略(Network Policy)来定义容器间的访问策略。

在Terway网络插件中,每个Pod都拥有独立的网络栈和IP地址。同一台ECS内的Pod之间通信,直接通过机器内部的转发;跨ECS的Pod通信,报文通过VPC的弹性网卡直接转发。由于不需要使用VxLAN等隧道技术封装报文,因此Terway模式网络具有较高的通信性能。

Terway提供共享ENI多IP模式和独占ENI模式,以下介绍两种方式的实现原理和存在的差异。

Terway共享ENI多IP模式

在共享ENI(弹性网络接口)多IP模式下,多个Pod可以共享同一个ENI,但每个Pod被分配不同的IP地址。这种模式增加了节点上Pod的部署密度,同时也减少了对ENI资源的需求。

说明

vethipvlan是Linux中的网络虚拟化技术。veth是一对虚拟以太网设备,数据包从一端进入可以从另一端出来,常用于连接容器和宿主机。ipvlan允许单个物理网络接口拥有多个IP地址,适合于要求较高网络性能的场景。

image

Terway独占ENI模式

说明

Terway独占ENI模式可能会受到ECS配额的限制。关于如何提升创建限额,请参见使用限制

独占ENI模式为每个Pod分配一个独立的ENI和IP地址,每个Pod都拥有自己的网络接口,并且网络性能更接近于传统虚拟机。这种模式适合对网络性能有较高要求的场景,比如需要高网络吞吐量或低延迟的应用。

image

Terway各种模式对比

Terway模式的节点允许创建Pod数量依赖ECS实例规格所提供的弹性网卡数量,建议您选择较高规格和较新类型的ECS机型。ECS弹性网卡数量必须满足规格限制才能加入集群:共享弹性网卡模式下,机型支持的最大Pod数需大于11;独占弹性网卡模式下,机型支持的最大Pod数需大于6。关于ECS提供的实例规格资源,请参见实例规格族,或使用OpenAPI Explorer查询。

说明
  • 节点最大容器网络Pod数量≥Pod维度网络支持配置的Pod数量。

  • 节点最大Pod=节点容器网络Pod+主机网络Pod。

  • 在一个集群中,不支持terway-eni和terway-eniip组件共存。

Terway不同模式使用的组件有所不同。使用不同的组件,支持配置的Pod数量、Pod维度网络、网络数据路径也有所不同。详情见下表:

Terway模式

创建集群时选择的Terway模式

使用的组件

特点

节点最大容器网络Pod数量

Pod维度网络(固定IP、虚拟交换机、安全组)支持配置的Pod数量

网络数据路径

共享ENI多IP模式

默认为terway-eniip,无需进行其他选择。

terway-eniip

  • Pod使用ENI上的IP资源,多个Pod共享一个ENI。

  • 节点部署密度高。

ECS支持的弹性网卡数-1)×单个ENI支持的私有IP数

说明

节点最大容器网络Pod数量>11。

0

  • veth

  • datapathv2

  • ipvlan

共享ENI多IP模式+Trunk ENI

您需要在创建集群时选择Trunk ENI。

terway-eniip + terway-controlplane

  • 在共享ENI多IP模式基础上,增加了对Trunk ENI的支持,允许混合部署。

  • 使用Trunk ENI类型的Pod可配置独立的虚拟交换机、安全组,支持固定IP。

  • 兼备部署密度高、配置灵活的特点。

ECS支持的弹性网卡数-1)×单个ENI支持的私有IP数

说明

节点最大容器网络Pod数量>11。

ECS支持的总网卡数-ECS支持的弹性网卡数

  • veth

  • datapathv2

  • ipvlan

独占ENI模式

Pod独占弹性网卡模式

terway-eni + terway-controlplane

Pod独占使用ENI资源,提供最佳网络性能。

ECS支持的弹性网卡数-1

说明

节点最大容器网络Pod数量>6。

ECS支持的弹性网卡数-1

独占

综上所述,在选择Terway模式时,需要根据具体的业务需求、性能要求以及网络策略来决定使用哪种模式。例如,如果需要在节点上尽可能多地部署Pod,可以选择共享ENI多IP模式;如果需要为每个Pod提供最佳的网络性能,可以选择独占ENI模式。

查看节点支持的最大容器网络Pod数量

  • 方式一:创建节点池时,在实例规格区域,通过Terway兼容性(可支持 Pod 数量)查看某一实例规格支持的Pod数量。

  • 方式二:先参考下列方式获取计算数据,然后手动计算机型支持的Pod数量。

    • 通过文档查询实例规格支持的弹性网卡数量。具体信息,请参见实例规格族

    • 通过OpenAPI进行查询,通过指定已有节点的实例规格InstanceTypes,单击发起调用,返回值中EniQuantity表示实例规格支持的弹性网卡上限,EniPrivateIpAddressQuantity表示单个弹性网卡支持的私有IP数量。

配置Terway网络

步骤一:规划和准备集群网络

使用Terway网络插件创建ACK Kubernetes集群时,您需要指定专有网络VPC、虚拟交换机、Pod网络CIDR(地址段)和Service CIDR(地址段)。因此,在创建集群之前,您需要先创建一个专有网络VPC,并在VPC下创建3个及以上虚拟交换机,且这3个虚拟交换机需要处于不同可用区。

关于使用Terway网络模式时规划配置网段需要注意的更多信息,请参见Kubernetes集群网络规划

    说明
    • 虚拟交换机网段,对应节点所使用的网段。

    • Pod虚拟交换机网段,对应Pod所使用的网段。

本文介绍如何创建一个专有网络和3个虚拟交换机。

  1. 登录专有网络管理控制台

  2. 在顶部菜单栏处,选择专有网络的地域,然后单击创建专有网络

    重要

    专有网络所在地域必须与将要创建的ACK集群保持一致。

  3. 创建专有网络页面,设置相关配置项。

    配置项

    说明

    示例值

    名称

    自定义名称。

    vpc_192_168_0_0_16

    IPv4网段

    建议您使用RFC私网地址作为专有网络的网段。

    192.168.0.0/16

    IPv6网段

    系统为VPC分配的IPv6网段为全球单播地址段,VPC中的实例分配IPv6地址后可以通过IPv6网关连接互联网。

    分配(默认)。

    交换机

    设置3个虚拟交换机

    说明

    如需使用IPv6,则需要配置IPv6网段。

    • 第一个交换机名称为switch_192_168_0_0_20,选择可用区,设置IPv4网段192.168.0.0/20

    • 第二个交换机名称为switch_192_168_16_0_2019,选择可用区,设置IPv4网段192.168.16.0/20

    • 第三个交换机名称为switch_192_168_32_0_20,选择可用区,设置IPv4网段192.168.32.0/20

  4. 配置完成后,单击确定

步骤二:配置Terway网络插件

您需要在创建集群时配置Terway网络插件,已创建的集群不支持修改网络插件类型。关于创建集群的其他参数,请参见创建Kubernetes托管版集群

  1. 登录容器服务管理控制台

  2. 为Terway网络插件配置集群网络的关键参数。

    配置项

    说明

    IPv6双栈

    选中开启。如果没有在创建VPC时分配IPv6网段,则无法使用IPv6双栈功能。

    开启IPv6双栈将创建双栈Kubernetes集群。双栈功能正在公测中,如需使用请前往配额平台申请。

    重要
    • 仅1.22及以上版本的Kubernetes集群支持IPv6双栈功能。

    • Worker节点与控制平面之间的通信使用IPv4地址。

    • 容器网络插件需选择Terway。

    • 集群使用的VPC及ECS需要支持IPv6双栈。

    专有网络

    选择步骤一:规划和准备集群网络中创建的专有网络。

    网络插件

    选择Terway

    Terway模式

    • 设置是否选中Pod独占弹性网卡以获得最佳性能。如需使用Pod独占弹性网卡以获得最佳性能功能,请前往配额平台提交申请。

      • 如果选中,Pod将独占一个专有的弹性网卡。

        说明

        启用Pod独占弹性网卡以获得最佳性能功能后,一个节点上能运行的Pod数量将减少,请谨慎选择。

      • 如果不选中,使用弹性网卡的辅助IP分配给Pod,一个Pod占用一个弹性网卡辅助IP地址。

    • 设置是否选中IPvlan

      • 只在弹性网卡共享模式支持选中。

      • 如果选中,采用IPvlan eBPF作为网卡共享模式虚拟化技术,并且只能使用Alibaba Cloud Linux系统,性能优于默认模式。

      • 如果不选中,则使用默认模式,采用策略路由作为网卡共享模式虚拟化技术,同时兼容Centos 7和Alibaba Cloud Linux的系统。

      • IPvlan功能仅支持在创建集群时配置。集群一旦创建成功,将不支持开启或关闭IPvlan功能。

      关于Terway模式的IPvlan模式的详细信息,请参见Terway网络插件使用场景

    • 设置是否选中NetworkPolicy 支持

      • 只在弹性网卡共享模式下支持选中,默认不选中。

      • 如果选中,集群支持使用Kubernetes的NetworkPolicy策略对Pod进行网络控制。

      • 如果不选中,集群将不会支持使用Kubernetes的NetworkPolicy策略对Pod进行网络控制,这样将不存在网络策略对Kubernetes的API Server产生过大的负载。

      如何使用ACK集群的网络策略及常用的使用场景,请参见在ACK集群使用网络策略

    • 设置是否选中Trunk ENI 支持。如需使用Trunk ENI 支持,请前往配额平台提交申请。Terway Trunk ENI支持为每个Pod配置固定IP、独立的虚拟交换机、安全组,提供精细化流量管理、流量隔离、网络策略配置和IP管理能力。更多信息,请参见为Pod配置固定IP及独立虚拟交换机、安全组

    虚拟交换机

    选择步骤一:规划和准备集群网络中创建的专有网络。

    Service CIDR

    保留默认值。

    IPv6 Service CIDR

    在启用IPv6双栈后可配置,保留默认值。

    为Terway网络插件配置集群网络的关键参数配置如下图所示。

    image.png

  3. 将集群创建完成后,可以在组件管理页面的网络页签下查看您安装的网络插件。

    不同的组件实现的功能、支持配置的Pod数量计算方式有所不同。详细信息,请参见Terway各种模式对比

Terway网络插件使用场景

Terway DataPathv2模式

从Terway V1.8.0版本起引入了DataPathv2模式。在新建集群时,系统将默认启用这一模式。与原有的IPvlan模式相比,DataPathv2模式具有更好的兼容性。

DataPathv2与IPvlan模式差异

对比项

DataPathv2

IPvlan

网络接口

veth

ipvlan

NetworkPolicy

支持

支持

Trunk ENI

支持

支持

Terway DataPathv2模式使用限制

  • 需要使用容器服务ACK中的Alibaba Cloud Linux操作系统镜像。

  • 尚未支持安全沙箱运行时。

  • 网络策略(NetworkPolicy)实现和原有Terway有差异:

    • CIDR选择器优先级低于Pod选择器。如果CIDR包含Pod网段,则需要额外增加Pod选择器。

    • 对CIDR选择器中的except关键字支持不佳,不建议使用except关键字。

    • 使用Egress类型的NetworkPolicy会导致访问集群中Host网络类型的Pod和集群中节点的IP失败。

  • 集群内部访问对外暴露的LoadBalancer类型Service对应的SLB时可能存在回环问题而导致网络不通。更多信息,请参见为什么无法访问负载均衡

适用场景

  • 中间件与微服务

    避免了大规模部署时带来的性能衰减,微服务全链路延迟降低。

  • 游戏、直播类应用

    显著降低网络延迟,减少多个实例之间的争抢。

  • 高性能计算

    高性能计算会有大量的网络吞吐,IPvlan模式网络本身带来CPU等的开销减少,为业务本身留出更多的计算资源。

Terway IPvlan模式

在创建Terway集群时,如果配置的网络模式为IPvlan。Terway IPvlan模式采用IPvlan虚拟化和eBPF内核技术实现高性能的Pod和Service网络。

使用限制

  • 需要使用容器服务ACK中的Alibaba Cloud Linux操作系统镜像。

  • 尚未支持安全沙箱运行时。

  • 网络策略(NetworkPolicy)实现和原有Terway有差异:

    • CIDR选择器优先级低于Pod选择器。如果CIDR包含Pod网段,则需要额外增加Pod选择器。

    • 对CIDR选择器中的except关键字支持不佳,不建议使用except关键字。

    • 使用Egress类型的NetworkPolicy会导致访问集群中Host网络类型的Pod和集群中节点的IP失败。

  • 集群内部访问对外暴露的LoadBalancer类型Service对应的SLB时可能存在回环问题而导致网络不通。更多信息,请参见为什么无法访问负载均衡

功能说明

不同于默认的Terway的网络模式,IPvlan模式主要在Pod网络、Service、网络策略(NetworkPolicy)做了性能优化:

  • Pod的网络直接通过ENI网卡的IPvlan L2的子接口实现,简化了网络在宿主机上的转发流程,让Pod的网络性能几乎与宿主机的性能无异,延迟相对传统模式降低了30%。

  • Service的网络采用eBPF替换原有的kube-proxy模式,不需要经过宿主机上的iptables或者IPVS转发,在大规模集群中性能几乎无降低,扩展性更优。在大量新建连接和端口复用场景中,请求延迟比IPVS和iptables模式大幅降低。

  • Pod的网络策略(NetworkPolicy)也采用eBPF替换掉原有的iptables的实现,不需要在宿主机上产生大量的iptables规则,降低网络策略对网络性能的影响。

适用场景

  • 中间件与微服务

    避免了大规模部署时带来的性能衰减,微服务全链路延迟降低。

  • 游戏、直播类应用

    显著降低网络延迟,减少多个实例之间的争抢。

  • 高性能计算

    高性能计算会有大量的网络吞吐,IPvlan模式网络本身带来CPU等的开销减少,为业务本身留出更多的计算资源。

NetworkPolicy网络策略模式

当您使用Terway容器网络时,如果您希望在IP地址或者端口层面控制网络流量,您可以为集群中特定应用使用网络策略。详细信息,请参见在ACK集群使用网络策略

Trunk ENI模式

Terway Trunk ENI支持为每个Pod配置固定IP、独立的虚拟交换机、安全组,能提供精细化流量管理、流量隔离、网络策略配置和IP管理能力。详细信息,请参见为Pod配置固定IP及独立虚拟交换机、安全组