Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。
阅读前提示
为了让您能更好地了解Terway的工作模式,建议您在使用Terway网络插件前阅读本文档。
阅读本文前,推荐您参见网络概述、Terway与Flannel的对比文档了解容器网络插件的基本概念并完成容器网络插件选型。
创建集群前需要对集群中的网段进行规划,具体操作请参见Kubernetes集群网络规划。
费用说明
使用Terway插件并不收费,但在每个节点上都会部署Terway所使用的Pod,这些Pod会占用少量节点资源。关于ACK的云产品资源计费信息,请参见云产品资源计费。
节点Pod限额计算方法
使用Terway网络插件时,单节点支持的最大数量基于节点使用的ECS规格支持的ENI数量。Terway对单节点的Pod限额有最低限制,单节点支持的Pod限额需要满足限制才能正常加入集群。详细信息请参见下表:
Terway模式 | 单节点Pod限额 | 示例值 | 单节点支持固定IP、独立虚拟交换机、独立安全组功能的Pod数量 |
共享ENI模式 | (ECS规格支持的ENI数量-1)×单个ENI支持的私有IP数。 (EniQuantity-1)×EniPrivateIpAddressQuantity 说明 单节点的Pod限额必须>11才能加入集群。 | 以通用型实例规格族g7的ecs.g7.4xlarge规格为例。该规格实例支持8个ENI,单个ENI支持30个私有IP。单节点Pod限额为(8-1)×30=210个Pod。 重要 使用节点ENI的Pod限额是由节点规格决定的固定值。修改 | 0 |
共享ENI模式+Trunk ENI | ECS规格支持的总网卡数-ECS规格支持的弹性网卡数。 EniTotalQuantity-EniQuantity | ||
独占ENI模式 | EniQuantity-1 说明 单节点的Pod限额必须>6才能加入集群。 | 以通用型实例规格族g7的ecs.g7.4xlarge规格为例。该规格实例支持8个ENI。单节点Pod限额为(8-1)=7个Pod。 | EniQuantity-1 |
在Terway v1.11.0及之后的版本中,Terway支持为节点池选择独占ENI模式或共享ENI模式,在单个集群中可同时存在两种节点池,更多信息请参见Terway发布记录。
查看节点支持的最大容器网络Pod数量
在创建集群时安装Terway网络插件
您需要在创建集群时安装Terway网络插件,已创建的集群不支持修改网络插件类型。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击创建集群。
为Terway网络插件配置集群网络的关键参数。关于创建集群的其他参数,请参见创建ACK托管集群。
配置项
说明
IPv6双栈
勾选开启后,会为集群开启双栈,同时支持IPv4与IPv6地址。
专有网络
集群所使用的VPC。
网络插件
选择Terway。
DataPath V2
勾选后,会使用DataPathv2加速模式。选择加速模式后,Terway会采取不同于共享ENI常规模式的流量转发链路,实现更快的网络通信。此模式的具体特性,请参见网络加速。
NetworkPolicy 支持
勾选后,则会支持Kubernetes原生的
NetworkPolicy
。说明从Terway v1.9.2开始,新建集群NetworkPolicy由eBPF的实现提供,数据面会开启DataPathv2功能。
说明通过控制台管理
NetworkPolicy
的功能正在公测中,如果您希望使用,请在配额平台提交申请。Trunk ENI 支持
勾选后,会启用Trunk ENI模式,可以为每个Pod配置固定IP、独立的虚拟交换机、安全组。
说明ACK托管集群无需申请即可选择Trunk ENI选项。如果您希望在ACK专有集群中开启Trunk ENI,请先在配额平台提交申请。
从Kubernetes 1.31开始,新建的ACK托管集群会自动启用Trunk ENI功能,无需手动进行选择。
虚拟交换机
集群中节点所使用的虚拟交换机网段。建议选择来自3个及以上不同可用区的交换机,以达到更高集群可用性等级。
Pod 虚拟交换机
Pod所使用的虚拟交换机网段,可以与节点虚拟交换机网段重合。
Service CIDR
Service所使用的网段,不能与节点及Pod的网段重合。
IPv6 Service CIDR
IP在启用IPv6双栈后可配置。
Terway工作模式参考信息
您可参照下方的详细介绍,了解Terway多种模式具体的对比以及工作原理。
共享ENI模式与独占ENI模式
为Pod分配IP地址时,Terway有两种模式:共享ENI模式和独占ENI模式。
在Terway v1.11.0及之后的版本中,Terway在单个集群中支持为单个节点池选择共享ENI或独占ENI模式,在创建集群时不再支持勾选。
节点上的主弹性网卡被分配给节点OS,其余弹性网卡会被Terway托管用于配置Pod网络,因此请勿手动配置这些弹性网卡。如果您需要自行管理部分弹性网卡,请参见为弹性网卡(ENI)配置白名单。
对比项 | 共享ENI模式 | 独占ENI模式 | |
Pod IP地址管理 | ENI分配方式 | 多个Pod共享一个ENI。 | 每个Pod在其节点上独占一个ENI。 |
Pod部署密度 | Pod部署密度较高。单个节点可支持数百个Pod。 | Pod部署密度较低。常用规格的节点只支持个位数的Pod。 | |
网络架构 | |||
数据链路 | Pod访问其他Pod,或作为Service后端被访问时,流量都会经过节点的网络协议栈。 | Pod访问Service时,流量仍旧会经过节点操作系统的协议栈。但当Pod访问其他Pod,或作为Service后端被访问时,会直接使用挂载的ENI绕过节点网络协议栈,以此获得更高的性能。 | |
适用场景 | 常规的Kubernetes使用场景。 | 这种模式中网络性能更接近于传统虚拟机,适合对网络性能有较高要求的场景,比如需要高网络吞吐量或低延迟的应用。 | |
网络加速 | 支持DadaPathv2网络加速,具体信息请参见网络加速。 | 不支持网络加速,但Pod独占ENI资源,已经提供了极佳的网络性能。 | |
NetworkPolicy支持 | 支持Kubernetes原生的 | 不支持 | |
访问控制 | 开启Trunk ENI配置后,支持为Pod配置固定IP、独立的安全组和虚拟交换机,具体信息请参见为Pod配置固定IP、独立虚拟交换机与安全组。 | 默认支持为Pod配置固定IP、独立的安全组和虚拟交换机。 |
网络加速
使用Terway共享ENI模式时,可以选择开启网络加速模式。选择开启加速模式后,Terway会采取不同于常规共享ENI模式的流量转发路径,以达成更高的性能。Terway目前支持DataPathv2加速模式,请参考下方的说明了解DataPathv2的特点。
DataPathv2是更早的IPvlan+eBPF加速模式的升级版。在Terway V1.8.0及更晚的版本中,创建集群并安装Terway插件时只支持选择DataPathv2加速。
DataPathv2加速模式与IPvlan+eBPF加速模式仅适用于共享ENI节点池,不影响独占ENI节点池。
DataPathv2特点 | 说明 |
适用Terway版本 | Terway V1.8.0及后续版本中创建的集群。 |
网络架构 | |
加速数据链路 |
|
性能优化 |
|
使用方法 | 在创建集群时,为网络插件选择Terway后,勾选DataPath V2选项。 |
注意事项 |
|
在更早创建的集群中,您可能选择了IPvlan+eBPF加速模式,您可以参照下方的说明了解其特点。
访问控制
Terway共享ENI模式通过对NetworkPolicy
的支持和Trunk ENI选项,允许对集群内的网络流量进行更精细化的管理。Terway独占ENI模式同样支持一部分流量控制能力。
NetworkPolicy支持
Terway独占ENI节点池不支持
NetworkPolicy
。Terway共享ENI节点池支持Kubernetes原生的
NetworkPolicy
功能,它通过用户定义的规则来控制Pod之间的网络流量。在创建集群时,如果为网络插件选择Terway后,勾选NetworkPolicy 支持选项,即可使集群支持
NetworkPolicy
。详细信息,请参见在ACK集群使用网络策略。说明通过控制台管理
NetworkPolicy
的功能正在公测中,如果您希望使用,请在配额平台提交申请。
为Pod配置固定IP、独立虚拟交换机与安全组
Terway独占ENI节点池默认支持为每个Pod配置固定IP、独立的虚拟交换机及安全组,能提供精细化流量管理、流量隔离、网络策略配置和IP管理能力。
Trunk ENI是Terway共享ENI节点池的一种选项。开启Trunk ENI后,可以为每个Pod配置固定IP、独立的虚拟交换机、安全组。
在创建集群时,网络插件选择Terway后,勾选Trunk ENI 支持选项。详细信息,请参见为Pod配置固定IP及独立虚拟交换机、安全组。
说明ACK托管集群无需申请即可选择Trunk ENI选项。如果您希望在ACK专有集群中开启Trunk ENI,请先在配额平台提交申请。
从Kubernetes 1.31开始,新建的ACK托管集群会自动启用Trunk ENI功能,无需手动进行选择。
开启Trunk ENI模式后,会安装terway-eniip与terway-controlplane组件。