创建多可用区的ECI Pod

更新时间: 2023-09-01 17:25:25

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

背景信息

  • ECI会把创建Pod的请求分散到所有的vSwitch中,从而达到分散压力的效果。

  • 如果创建Pod请求在某一个vSwitch中遇到没有库存的情况,会自动切换到下一个vSwitch继续尝试创建。

修改集群可用区配置

当集群创建成功后,需要修改集群的vSwitch配置。您无需重建集群,执行以下命令,根据实际需求修改kube-system/eci-profile configmap中的vswitch字段,修改后即时生效。

kubectl -n kube-system edit cm eci-profile
apiVersion: v1
data:
  kube-proxy: "true"
  privatezone: "true"
  quota-cpu: "192000"
  quota-memory: 640Ti
  quota-pods: "4000"
  regionId: cn-hangzhou
  resourcegroup: ""
  securitygroupId: sg-xxx
  vpcId: vpc-xxx
  vswitchIds: vsw-xxx,vsw-yyy,vsw-zzz
kind: ConfigMap

常见问题

  • 如何在ACK Serverless集群中加入其他Node?

    ACK Serverless集群没有Node节点的概念。如果您想让ECI可以部署到其他可用区,可以在kube-system下名为eci-profile的ConfigMap中,追加一个不同可用区的VSW,逗号分隔即可。

  • 如何将指定Pod部署到不同的可用区?

    部署Pod的时候默认是根据可用区下是否有足够的资源进行随机调度。

    匹配VK,通过三个Annotation实现对多可用区和多规格支持:

    • - k8s.aliyun.com/eci-schedule-strategy: " VSwitchOrdered"

    • - k8s.aliyun.com/eci-vswitch: "vsw-11111, vsw-22222"

    • - k8s.aliyun.com/eci-use-specs: "ecs.c5.4xlarge, ecs.c6.4xlarge,2-4Gi"

    VSwitchOrdered会根据指定的k8s.aliyun.com/eci-vswitch列表顺序创建ECI。通过k8s.aliyun.com/eci-schedule-strategy设置VSwitchRandomVSwitchOrdered,在创建ECI时实现随机调度到可用区或者按照注解中的VSW顺序来调度。

相关文档

阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈