aliyun k8s虚拟节点调度到eci,弹性能力很很强大,使用过程中的一些小记录。
网上相关yaml文件:
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通过节点信息,查看节点的标签及污点:
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
官方上的两种方法:
pod直接启动时设置参数(当然前提vk 要配置好启动好)
1
2kubectl run nginx --image nginx -l alibabacloud.com/eci=true
配置命名空间标签
给Pod所在的命名空间添加标签alibabacloud.com/eci=true,Pod将以ECI方式运行,其节点是虚拟节点1
kubectl label namespace vk alibabacloud.com/eci=true
指定annotation规格。
在节点亲和性nodeAffinity中指定virtual-kubelet。
设置节点容忍标签为virtual-kubelet.io/provider。
调度的的一些问题
- virtual-kubelet一般只会创建一个节点,只有一个交换机,也就是说调度只能调度到相应的这个交换机网段,如果使用eni模式,IP网段分配不够(如256个)扩展能力就受限,需要处理
- 添加所属区域交换机及网段
- 修改kube-system命名空间的 eni-config添加相应交换机ID, eci-profile 配置文件,vSwitchIds添加上交换机ID
参考链接
虚拟节点创建1万Pod
基于ECI运行Job任务
快速部署虚拟节点提升集群弹性能
快速部署虚拟节点virtual-nodes
通过部署ACK虚拟节点组件创建ECI Pod