全部产品
云市场

virtual-kubelet多可用区 多规格使用指南

更新时间:2020-01-20 19:01:16

背景

通过virtual-kubelet创建ECI实例时,特别是在大规模创建场景下,可能遇到没有库存的情况,所以采用virtual kubelet支持配置多可用区, 多实例规格方案,保证ECI实例创建的成功率。

多规格

使用指南

在创建pod时,用户根据计划使用实例规格的优先级,配置annotation中k8s.aliyun.com/eci-use-specs

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: multi-specs
  5. annotations:
  6. "k8s.aliyun.com/eci-use-specs": "64-512Gi,2-4Gi,ecs.c6.xlarge,ecigpu-P100-4"

工作原理

virtual-kubelet节点创建ECI实例时,如果遇到库存不足导致创建失败时,根据k8s.aliyun.com/eci-use-specs中配置的顺序依次重试创建ECI。在重试创建过程中,Pod状态一直处于Pending状态。

注:多规格设置是Pod级别,仅影响单个Pod创建策略。

多可用区

使用指南

多可用区就是给virtual-kubelet节点配置多个不同可用区的vswitch但是多个vswitch必须属于同一个VPC;首先,在同VPC下,不同可用区,创建vswitch或者使用已有vswitch,获取vswitch ID列表。

阿里云 serverless kubernetes集群

阿里云 serverless kubernetes集群,简称:ASK

新建ASK支持多可用区

在创建ASK集群时,可以选择使用已有专有网络,配置多个虚拟交换机,方式如下:

create_ask_support_multi_zone

存量ASK支持多可用区

ASK集群,由管理员负责统一维护,需要联系ASK管理员,将准备好的虚拟交换机ID,提供给ASK管理员。

其它集群

virtual-kubelet是采用Deployment方式部署,为支持多可用区,需要设置Deployment的环境变量ECI_VSWITCHvalue,设置方式区分kubernetes集群类型其它类型的kubernetes集群,需要用户自己更新Deployment实现支持多可用区,修改方式如下:

1.编辑deployment,追加VSwitchIDECI_VSWITCH环境变量,采用逗号分隔

  1. # 通常情况deployment部署在kube-system命名空间,名字:ack-virtual-node-controller,用户自定义集群有可能存在差异。
  2. $ kubectl -n kube-system edit deployment/ack-virtual-node-controller
  3. # 修改ECI_VSWITCH,追加vswitch
  4. - name: ECI_VSWITCH
  5. value: "vsw-bp1xpiowfm5vo8o3c3fny,vsw-bp1rkyjgr1xwoho6ko3zp"

2.修改完成后,保存退出,配置多可用区完成。

工作原理

  • VK会根据pod的UUID做固定的运算,把创建pod的请求分散到所有的vSwitch中, 做到分散压力的效果。
  • 如果创建pod请求在一个vSwitch中遇到没有库存的情况, 就会切换一个vSwitch继续尝试创建

注:多可用区是Virtual-Kubelet级别,影响节点上的所有Pod创建。