將Pod調(diào)度到VNode
對(duì)于自建的Kubernetes集群,即混合使用普通節(jié)點(diǎn)和虛擬節(jié)點(diǎn)(VNode)的模式下,您可以通過配置nodeSelector和tolerations,或者指定nodeName的方式,將Pod調(diào)度到VNode上,以ECI來運(yùn)行。本文介紹如何將Pod調(diào)度到VNode。
調(diào)度方式概述
VNode對(duì)標(biāo)原生kubernetes節(jié)點(diǎn),在混合使用普通節(jié)點(diǎn)和VNode的模式下,一般可以通過以下幾種方式將Pod調(diào)度到VNode:
下述方式均需要對(duì)存量資源做一定的修改,無法做到零侵入,建議您部署eci-profile組件,可以自定義配置Selector,將滿足條件的Pod自動(dòng)調(diào)度到VNode。具體操作,請(qǐng)參見使用eci-profile調(diào)度Pod到VNode。
配置nodeSelector和tolerations
VNode默認(rèn)配置了Label和Taint,因此可以通過配置nodeSelector和tolerations,將Pod調(diào)度到VNode,以ECI來運(yùn)行。
指定nodeName
支持指定nodeName,將Pod調(diào)度到某個(gè)特定的VNode,以ECI來運(yùn)行。
方式一:配置nodeSelector和tolerations
VNode默認(rèn)配置了Label和Taint:
...
labels:
k8s.aliyun.com/vnode: "true"
...
taints:
- effect: NoSchedule
key: k8s.aliyun.com/vnode
value: "true"
因此可以通過配置nodeSelector和tolerations,將Pod調(diào)度到VNode,以ECI來運(yùn)行。配置示例如下:
將以下內(nèi)容保存為deploy-vnode-test1.yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: vnode-nginx-test1 spec: replicas: 2 selector: matchLabels: app: uid template: metadata: labels: app: uid spec: nodeSelector: #配置特定的nodeSelector k8s.aliyun.com/vnode: "true" tolerations: #配置特定的tolerations - key: k8s.aliyun.com/vnode operator: "Equal" value: "true" effect: "NoSchedule" containers: - name: nginx image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
部署Deployment。
kubectl apply -f deploy-vnode-test1.yaml
方式二:指定nodeName
支持指定nodeName,將Pod調(diào)度到某個(gè)特定的VNode。配置示例如下:
查詢VNode信息。
kubectl get nodes
從返回信息中獲取VNode名稱。默認(rèn)情況下,VNode的名稱格式為
[region].[VNode ID]
。返回示例如下:NAME STATUS ROLES AGE VERSION cn-hangzhou.vnd-2ze2qhf8lmp5kgsx**** Ready agent 132m v1.20.6 k8s-master Ready control-plane,master 169m v1.20.6
將以下內(nèi)容保存為deploy-vnode-test2.yaml。
apiVersion: apps/v1 kind: Deployment metadata: name: vnode-nginx-test2 spec: replicas: 2 selector: matchLabels: app: uid template: metadata: labels: app: uid spec: containers: - name: nginx image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 nodeName: cn-hangzhou.vnd-2ze2qhf8lmp5kgsx**** #指定VNode名稱
部署Deployment。
kubectl apply -f deploy-vnode-test2.yaml