aliyun k8s虚拟节点调度到eci,弹性能力很很强大,使用过程中的一些小记录。

网上相关yaml文件:

  1. yaml 文件相关

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # cat nginx.yaml
    apiVersion: v1
    kind: Pod
    metadata:
    name: nginx
    spec:
    containers:
    - image: nginx
    imagePullPolicy: Always
    name: nginx
    nodeSelector:
    kubernetes.io/role: agent
    beta.kubernetes.io/os: linux
    type: virtual-kubelet
    tolerations:
    - key: virtual-kubelet.io/provider
    operator: Exists
  2. 通过节点信息,查看节点的标签及污点:

    1
    2
    3
    标签 : alpha.service-controller.kubernetes.io/exclude-balancer: true beta.kubernetes.io/arch: amd64 beta.kubernetes.io/os: linux failure-domain.beta.kubernetes.io/region: cn-hangzhou failure-domain.beta.kubernetes.io/zone: cn-hangzhou-j kubernetes.io/arch: amd64 kubernetes.io/hostname: virtual-kubelet-cn-hangzhou-j kubernetes.io/os: linux kubernetes.io/role: agent service.beta.kubernetes.io/exclude-node: true type: virtual-kubelet

    污点 (Taints) : virtual-kubelet.io/provider: alibabacloud Effect: NoSchedule

自己写的一个yaml,通过搜索和结合上面的

调度到virtual-kubelet :
labels:
alibabacloud.com/eci: ‘true’
nodeSelector:
beta.kubernetes.io/os: linux
kubernetes.io/role: agent
type: virtual-kubelet
tolerations:
- key: virtual-kubelet.io/provider
operator: Exists

官方上的两种方法:

  1. pod直接启动时设置参数(当然前提vk 要配置好启动好)

    1
    2
    kubectl run nginx --image nginx -l alibabacloud.com/eci=true

  2. 配置命名空间标签
    给Pod所在的命名空间添加标签alibabacloud.com/eci=true,Pod将以ECI方式运行,其节点是虚拟节点

    1
    kubectl label namespace vk alibabacloud.com/eci=true

指定annotation规格。
在节点亲和性nodeAffinity中指定virtual-kubelet。
设置节点容忍标签为virtual-kubelet.io/provider。

调度的的一些问题

  1. virtual-kubelet一般只会创建一个节点,只有一个交换机,也就是说调度只能调度到相应的这个交换机网段,如果使用eni模式,IP网段分配不够(如256个)扩展能力就受限,需要处理
  2. 添加所属区域交换机及网段
  3. 修改kube-system命名空间的 eni-config添加相应交换机ID, eci-profile 配置文件,vSwitchIds添加上交换机ID

参考链接

虚拟节点创建1万Pod
基于ECI运行Job任务
快速部署虚拟节点提升集群弹性能
快速部署虚拟节点virtual-nodes
通过部署ACK虚拟节点组件创建ECI Pod