Ack集群Terway网络场景下的vSwitch扩容
· 阅读需 5 分钟

Terway网络介绍
Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。可以通过使用Terway网络插件实现Kubernetes集群内部的网络互通
Terway网络插件将原生的弹性网卡分配给Pod实现Pod网络,支持基于Kubernetes标准的网络策略(Network Policy)来定义容器间的访问策略,并兼容Calico的网络策略
在Terway网络插件中,每个Pod都拥有自己网络栈和IP地址。同一台ECS内的Pod之间通信,直接通过机器内部的转发,跨ECS的Pod通信,报文通过VPC的弹性网卡直接转发。由于不需要使用VxLAN等的隧道技术封装报文,因此Terway模式网络具有较高的通信性能
一句话总结,Terway最大的特点就是借助于云上ECS服务器的特性,将pod与node的网络进行了拉平,同时使用VPC下vSwitch中的ip
问题现象
由于使用了Terway网络模式,随着node机器和pod数量的增多,每分配一个ip出去都需要消耗掉vpc下vsw的可用ip。如果某短时间业务快速增长,导致pod大量消耗可用ip,这个时候就有可能因前期规划不充足导致vSwitch的可用ip不足
这个时候新创建的pod状态为ContainerCreating,describe查看pod提示error allocate ip...,这个时候查看Pod所在节点的Terway的日志,会有下面内容
Message: The specified VSwitch "vsw-xxxxx" has not enough IpAddress.
提示没有足够的ip,这个时候基本都是由于交换机的ip不够用,登录到交换机的控制台可以查看到这个节点所在的交换机的可用ip数,如果很少甚至为0,就表示需要扩容了