Terway网络场景下的vSwitch扩容

  1. 云栖社区>
  2. 容器服务Docker&Kubernetes>
  3. 博客>
  4. 正文

Terway网络场景下的vSwitch扩容

CasperLiu 2020-03-23 20:43:47 浏览527
展开阅读全文

Terway网络插件是阿里云容器服务自研的网络插件,使用原生的弹性网卡分配给Pod实现Pod网络。兼顾性能和灵活性,是阿里云容器服务目前阶段、尤其是在大规模集群场景下的首选网络方案。本文讲解如何处理集群使用的vSwitch IP资源不足的问题以及解决办法。

image

1. vSwitch IP资源不足的特征

如果用户发现Pod创建不出来,状态为ContainerCreating,使用命令

kubectl logs --tail=100 -f terway-eniip-zwjwx -n kube-system -c terway

查看Pod所在节点的terway的日志中,出现如下InvalidVSwitchId.IpNotEnough错误信息:

time="2020-03-17T07:03:40Z" level=warning msg="Assign private ip address failed: Aliyun API Error: RequestId: 2095E971-E473-4BA0-853F-0C41CF52651D Status Code: 403 Code: InvalidVSwitchId.IpNotEnough Message: The specified VSwitch \"vsw-AAA\" has not enough IpAddress., retrying"

说明该节点的terway所使用的vSwitch没有空余IP地址,Pod会因为没有IP资源而一直处于ContainerCreating状态。
如果登录控制台查看该vSwitch的状态,会发现剩余IP数目为0.
image

为了解决这个问题,用户可以手动添加新的vSwitch,增加新的IP地址资源。


2. 添加vSwitch的流程

通过执行如下流程完成添加vSwitch到K8s集群使用。

(1) 在VPC控制台创建新的vSwitch, 注意该vSwitch必须与IP资源不足的vSwitch在一个区域。

因为Pod密度越来越大,建议给Pod使用的vSwitch的网段,网络位小于等于19,也就是网段至少包含8192个IP地址。

(2) 使用如下命令,添加vSwitch到terway的配置ConfigMap中。

kubectl edit cm eni-config -n kube-system

例如添加"vsw-BBB"到vswitches部分,其中vsw-AAA是已经存在的、IP资源不足的vSwitch。

eni_conf: |
{
"version": "1",
"max_pool_size": 25,
"min_pool_size": 10,
"vswitches": {"cn-shanghai-f":["vsw-AAA", "vsw-BBB"]},
"service_cidr": "172.21.0.0/20",
"security_group": "sg-CCC"
}

(3) 如果terway版本不是最新的,需要在组件控制台将terway版本升到最新版本

(4) 如果Step 3中版本已经是最新,跳过该步,继续到下一步;否则,使用如下命令删除全部terway Pod重建。

针对ENI单IP场景执行:

kubectl delete -n kube-system pod -l app=terway-eniip

或者针对ENI单IP场景执行:

kubectl delete -n kube-system pod -l app=terway-eni

然后检查全部terway Pod重建成功。

(5) 创建Pod,验证新创建的Pod可以从新vSwitch成功分配获得IP。


3. 寻求帮助

如果在上述操作中出现异常,请联系客服解决。

网友评论

登录后评论
0/500
评论