多可用区创建实例
当您在应对突发流量,进行业务的快速水平扩容时,或者启动大量实例进行Job任务处理时,可能会遇到可用区对应规格实例库存不足或者指定的交换机IP耗尽等特殊情况,从而导致实例创建失败,影响业务。此时,您可以采用指定多可用区的方式来创建实例,提高实例创建的成功率。
前提条件
已在要使用的专有网络VPC下创建多个不同可用区的交换机。
背景信息
创建ECI实例(Pod)时,可以通过指定多个交换机来指定了多个可用区,系统会随机把请求分散到所有指定的可用区中,来分散压力,如果在某一个可用区遇到没有库存的情况,会自动切换到下一个可用区继续尝试创建。
指定多可用区(交换机)时,需注意以下限制:
指定的交换机必须属于同一个VPC。
最多可以指定10个交换机。
您可以配合使用多可用区和多规格的方式来创建实例,提高实例的创建成功率。关于如何使用多规格方式,请参见多规格创建实例。
Kubernetes方式
配置多可用区时,您可以根据需要选择为集群或者为特定ECI实例进行配置:
集群:为集群指定多个交换机,对集群内的所有ECI实例生效。
ECI实例:在创建ECI实例时指定多个交换机,仅对该实例生效。
对应的配置方式如下:
新建集群
创建集群前,建议您在要使用的专有网络VPC下创建多个不同可用区的交换机。创建集群时,您可以配置多个交换机来实现多可用区功能。下图以在容器服务管理控制台创建ASK集群为例。
已有集群
根据VK的版本,您可以通过修改eci-profile或者修改环境变量的方式来配置多可用区:
修改eci-profile(VK版本为v2.0.0.90-15deb126e-aliyun及以上)
您可以编辑名为eci-profile的ConfigMap,追加vswitch ID到
data.vSwitchIds
字段来实现多可用区。方式如下:编辑eci-profile。
kubectl edit cm -n kube-system eci-profile
修改data.vswitch。
追加vswitch ID。多个vswitch ID之间采用半角逗号(,)分隔。
data: enableClusterIp: "true" enableHybridMode: "false" enablePrivateZone: "false" resourceGroupId: "" securityGroupId: sg-2ze0b9o8pjjzts4h**** selectors: "" vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** vpcId: vpc-2zeghwzptn5zii0w7****
修改完成后,保存退出。
修改环境变量(VK版本低于v2.0.0.90-15deb126e-aliyun)
说明建议您升级VK到最新版本,以便使用新功能。
根据您部署VK的方式,您可以更新Deployment或者StatefulSet的环境变量
ECI_VSWITCH
的值,来实现多可用区。以Deployment为例,方式如下:编辑Deployment。
kubectl -n kube-system edit deployment/virtual-node-controller
修改ECI_VSWITCH修改完成后,保存退出。
追加vswitch ID到环境变量
ECI_VSWITCH
中。多个vswitch ID之间采用半角逗号(,)分隔。- name: ECI_VSWITCH value: vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k****
修改完成后,保存退出。
ECI实例
您可以在Pod metadata中添加Annotation来指定多可用区,相关配置项如下:
k8s.aliyun.com/eci-vswitch:指定多个交换机实现多可用区。
k8s.aliyun.com/eci-schedule-strategy:多可用区调度策略,可配置为VSwitchOrdered(按指定的交换机顺序)或者VSwitchRandom(随机)。
示例如下:
apiVersion: v1 kind: Pod metadata: annotations: k8s.aliyun.com/eci-vswitch: "vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k****" #指定多个交换机ID k8s.aliyun.com/eci-schedule-strategy: "VSwitchOrdered" #设置多可用区调度策略 name: nginx-test spec: containers: - name: nginx image: nginx:latest
OpenAPI方式
调用CreateContainerGroup接口创建ECI实例时,您可以通过VSwitchId参数来指定多可用区。VSwitchId的参数说明如下表所示。更多信息,请参见CreateContainerGroup。
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
VSwitchId | String | 是 | vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k**** | 指定虚拟交换机ID,支持指定多个交换机ID(单次最多10个),各交换机ID之间可以用半角逗号(,)进行分割。例如:vsw-***,vsw-***。 |
建议您配合使用多可用区和多规格方式来创建实例,通过VSwitchId参数来指定多可用区,通过InstanceType参数来指定多规格。
控制台方式
通过弹性容器实例售卖页创建ECI实例时,您可以选择多个交换机来指定多可用区。

后续步骤
如果您采用NAT网关来连接公网,为已有集群或者ECI实例配置多可用区(即多个交换机)后,您需要检查SNAT条目配置是否仍满足需求。
例如:如果原有SNAT条目粒度为交换机粒度,您希望所有ECI实例均能访问公网,则配置多个交换机后,您需要增加新增交换机对应的条目,保证新交换机下的ECI实例可以访问公网。
