Terway,阿里云基于Flannel的自研网络插件,可以看作是性能更优的Flannel。
Terway-eniip(即Terway2.0版本,下文简称Terway2),阿里自研的第二代Terway网络插件。
默认推荐的网络插件为Terway,适用于绝大多数使用场景。如果对容器网络性能没有特别的要求,推荐选择Terway网络,而不需要选择Terway-eniip(Terway2 的集群配置以及额外网络配置比较复杂,请谨慎选择)。
想要了解两种网络插件的区别,可以继续往下阅读。
1)Pod网段是Overlay的网段;比如vpc是10/8,容器可选192.168/16或172.16/12的子段;
2)每个节点再分配更细的段,例如分配/24的 (节点掩码);
3)依靠VPC路由表打通不同节点之间的网络。
1)无封包,相对用户自建k8s性能提升20%;
2)Pod网段是用户指定的独立于vpc的段,便于管理。
每个节点对应一个vpc路由,节点的最大规模受限于vpc路由表Quota。默认为48。
terway网络下,集群的最大节点数受限于Pod CIRD网段以及VPC路由表条目的上限。其中,VPC路由表条目是可以后期申请增加的,Pod CIRD网段一旦设置就无法更改。
例如,将网段设置为172.20.0.0/16,该网段可用IP数为65534。
每台ECS最大POD IP数量为128(目前默认为128,以后会开放配置)。
那么,节点最大ECS数量 = 网段可用IP数/ECS最大POD IP数 = 65534/128 = 510。
如果网段的掩码过大,可用IP少,那么可以添加的ECS数量就会少?。
?
默认为48,集群新增一台ECS,占用一个路由表条目。可以根据已经使用的条目数量以及需要添加的ECS数量,评估好所需配额,进行申请。
资源视图-专有网络VPC-配额管理-vpc_quota_route_entrys_num。
Terway2 是阿里云自研的 Kubernetes 网络插件,它通过将弹性网卡(ENI)分配给 Pod 来构建 Pod 网络。使用 Terway2 插件能够带来更好的 Pod 网络性能。但相对于 Flannel,创建使用 Terway2 的集群配置较为复杂。
1)使用弹性网卡/辅助IP来作为容器网络的资源;
2)使用vpc/vswitch的网段作为Pod网络的网段;
3)容器网络使用弹性网卡或辅助IP打通。
1)性能相对ECS无损失;
2)支持NetworkPolicy限制Pod间访问规则;
3)支持限制Pod的网络带宽;
4)使用弹性网卡可以无缝的跟云产品/混合云集成。
1)创建集群配置略复杂;
2)节点上能运行的Pod数量受限节点的弹性网卡和弹性网卡辅助IP的配额。
不同的网络插件,对应的集群配置不一样,使用限制不一样。
Terway 集群配置与 Flannel 集群相比主要有两点不同:
1)Pod 需要通过弹性网卡(ENI)接入虚拟交换机,来组建 Pod 网络。因此,除了要选择节点虚拟交换机之外,还需要指定供 Pod 通信的虚拟交换机;
2)不同 ECS 规格所能支持挂载的弹性网卡数量不同,而 ECS 挂载弹性网卡的数量以及单个弹性网卡支持的 IP 数量直接决定了节点所能分配的 Pod 数量,因此在选择节点规格时需要注意 Pod 数量限制。
Terway |
Terway2 |
|
ECS规格要求 |
较低 |
较高 |
Pod CIDR |
需要设置 |
不需要设置 |
Pod虚拟交换机 |
不需要设置 |
需要设置 |
Pod访问公网 |
同Pod所在ECS |
走Pod虚拟交换机,需要NAT网关 |
Pod访问其他ECS |
同Pod所在ECS,即ECS能互通就行 |
Pod属于集群(自动创建)的安全组, 该安全组需要有其他ECS的授权才能访问其他ECS |
① terway2网络下,需要较高的ECS规格,不然能够部署的Pod数很少;
② terway2网络下,能部署的Pod容器数量受限于ECS弹性网卡,ECS规格越高,支持的弹性网卡ip数量越多;
③ terway2网络下,弹性网卡只能挂载在和它同可用区的ECS上,所以Pod需要单独指定vswitch;
④ terway2网络下,Pod访问公网,一定只能走NAT网关+EIP(绑定到虚拟交换机条目上),需要额外对这部分流量进行评估,选择相应的NAT网关规格和EIP带宽;
⑤ terway2网络下,Pod默认不能访问其他ECS,Pod所在安全组(为集群创建时后台自动创建),需要与要访问的ECS安全组互相授权,之后才能互相访问。
1. 建议您选择较高规格和较新类型的ECS机型,5代或者6代的8核以上机型;
2. 单Node所支持的最大Pod数取决于该Node的弹性网卡(ENI)数。
1)共享ENI支持的最大Pod数 = (ENI数 - 1)x 单ENI的私有IP数;
2)独占ENI支持的最大Pod数 = ENI数 - 1。
3. 集群容器中连接RDS,一定要配置Pod虚拟交换机的网段作为白名单。
1)先选节点虚拟交换机;
2)Pod虚拟交换机必须和节点虚拟交换机在同一个可用区,且不能重复,即所选的可用区下,需要有额外一个交换机用于Pod。列表中没有就表示需要新建交换机;
3)选择的节点虚拟交换机个数要和Pod虚拟交换机个数一致;
4)没有可选的Pod虚拟交换机,可以去VPC控制台创建新的交换机。
举个例子,如果选择A区ECS资源。选择了一个A可用区交换机作为节点虚拟交换机后,就必须选择另外一个A可用区交换机作为Pod虚拟交换机。即,A可用区至少要有两个交换机,一个选作节点交换机,另一个选作Pod交换机。
问题原因,ECS节点所支持的弹性网卡不足,建议使用 c或者g系列这种企业级的+ 4C以上。
每个规格的ECS所支持弹性网卡数量请参考:ECS实例规格簇-分别支持的弹性网卡数。
解决方案:
1)新建网络插件为Flannel的集群(暂时不可用,目前默认都是terway网络,预计下周可上线);
2)购买更新更高规格的ECS加入集群。