全部产品

多可用区创建实例

当您在应对突发流量,进行业务的快速水平扩容时,或者启动大量实例进行Job任务处理时,可能会遇到可用区对应规格实例库存不足或者指定的交换机IP耗尽等特殊情况,从而导致实例创建失败,影响业务。此时,您可以采用指定多可用区的方式来创建实例,提高实例创建的成功率。

前提条件

已在要使用的专有网络VPC下创建多个不同可用区的交换机。

背景信息

创建ECI实例(Pod)时,可以通过指定多个交换机来指定了多个可用区,系统会随机把请求分散到所有指定的可用区中,来分散压力,如果在某一个可用区遇到没有库存的情况,会自动切换到下一个可用区继续尝试创建。

说明

多可用区方式是虚拟节点级别,影响节点上所有Pod的创建策略。

指定多可用区(交换机)时,需注意以下限制:

  • 指定的交换机必须属于同一个VPC。

  • 最多可以指定10个交换机。

您可以配合使用多可用区和多规格的方式来创建实例,提高实例的创建成功率。关于如何使用多规格方式,请参见多规格创建实例

Kubernetes方式

配置多可用区时,您可以根据需要选择为集群或者为特定ECI实例进行配置:

  • 集群:为集群指定多个交换机,对集群内的所有ECI实例生效。

  • ECI实例:在创建ECI实例时指定多个交换机,仅对该实例生效。

对应的配置方式如下:

  • 阿里云ASK集群

    • 新建集群

      创建集群前,建议您在要使用的专有网络VPC下创建多个不同可用区的交换机。创建集群时,您可以配置多个交换机来实现多可用区。方式如下:

      多可用区
    • 已有集群

      您可以编辑ConfigMap,追加vswitch ID到eci-profile的data.vswitch字段来实现多可用区。方式如下:

      1. 编辑eci-profile。

        kubectl edit cm -n kube-system eci-profile
      2. 修改data.vswitch。

        追加vswitch ID。多个vswitch ID之间采用半角逗号(,)分隔。

        data:
          kube-proxy: "true"
          privatezone: "false"
          resourcegroup: ""
          securitygroup: sg-2ze5f30skxmd9nqhgr1p
          vswitch: vsw-2zer43jmhozdg6s6d*****,vsw-bp12wc9h5mslmu3js****,vsw-bp10df3mxae6lpmku****
      3. 修改完成后,保存退出。

  • 阿里云ACK集群或自建集群

    Virtual Kubelet采用Deployment或者StatefulSet方式部署。为支持多可用区,您需要更新Deployment或者StatefulSet的环境变量ECI_VSWITCH的值,来实现多可用区。

    说明

    通常情况下,在ACK集群中,Virtual Kubelet部署在kube-system命名空间,对应资源名称为virtual-node-eci(StatefulSet方式)或者ack-virtual-node-controller(Deployment方式)。如果是您自建的集群,请按实际更新部署。

    以ACK集群,Deployment方式为例:

    1. 编辑Deployment。

      kubectl -n kube-system edit deployment/ack-virtual-node-controller
    2. 修改ECI_VSWITCH。

      追加vswitch ID到环境变量ECI_VSWITCH中。多个vswitch ID之间采用半角逗号(,)分隔。

      - name:  ECI_VSWITCH
        value:  vsw-bp1xpiowfm5vo8o3c****,vsw-bp1rkyjgr1xwoho6k**** 
    3. 修改完成后,保存退出。

  • 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实例时,您可以选择多个交换机来指定多可用区。

多可用区1