Jika Anda memiliki kluster Kubernetes yang dikelola sendiri di pusat data atau pada instance Alibaba Cloud Elastic Compute Service (ECS), Anda dapat menggunakan baik node nyata maupun node virtual (VNode). Untuk menjadwalkan pod ke VNode, Anda dapat mengonfigurasi bidang nodeSelector dan tolerations, atau menentukan bidang nodeName. Setelah itu, pod dapat dijalankan sebagai instance kontainer elastis. Topik ini menjelaskan cara menjadwalkan pod ke VNode.
Ikhtisar metode penjadwalan
VNode setara dengan node Kubernetes asli. Jika kluster Kubernetes menggunakan baik node nyata maupun VNode, Anda dapat memilih salah satu metode berikut untuk menjadwalkan pod ke VNode:
Untuk menggunakan metode berikut, Anda perlu memodifikasi sumber daya yang ada. Modifikasi ini dapat menyebabkan kerentanan dalam sistem Anda. Kami merekomendasikan agar Anda menerapkan komponen eci-profile. Komponen ini memungkinkan Anda mengonfigurasi bidang selector untuk secara otomatis menjadwalkan pod yang memenuhi kondisi tertentu ke VNode. Untuk informasi lebih lanjut, lihat Gunakan eci-profile untuk menjadwalkan pod ke VNode.
Konfigurasikan bidang nodeSelector dan tolerations
Secara default, VNode dikonfigurasi dengan label dan taint. Oleh karena itu, Anda dapat mengonfigurasi nodeSelector dan tolerations untuk menjadwalkan pod ke VNode, lalu menjalankannya sebagai instance kontainer elastis.
Tentukan bidang nodeName
Anda dapat menentukan bidang nodeName untuk menjadwalkan pod ke VNode tertentu dan menjalankannya sebagai instance kontainer elastis.
Metode 1: Konfigurasikan bidang nodeSelector dan tolerations
Secara default, VNode dikonfigurasi dengan label dan taint seperti yang ditunjukkan dalam kode berikut.
...
labels:
k8s.aliyun.com/vnode: "true"
...
taints:
- effect: NoSchedule
key: k8s.aliyun.com/vnode
value: "true"Oleh karena itu, Anda dapat mengonfigurasi bidang nodeSelector dan tolerations untuk menjadwalkan pod ke VNode dan menjalankannya sebagai instance kontainer elastis. Lakukan langkah-langkah berikut:
Simpan konten berikut sebagai file 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: # Konfigurasikan nodeSelector. k8s.aliyun.com/vnode: "true" tolerations: # Konfigurasikan 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.2Buat Deployment.
kubectl apply -f deploy-vnode-test1.yaml
Metode 2: Tentukan bidang nodeName
Anda dapat menentukan bidang nodeName untuk menjadwalkan pod ke VNode. Lakukan langkah-langkah berikut:
Jalankan perintah berikut untuk menanyakan VNode.
kubectl get nodesDapatkan nama VNode dari keluaran perintah. Secara default, format nama VNode adalah
<region>.<VNode ID>. Contoh keluaran:NAME STATUS ROLES AGE VERSION cn-hangzhou.vnd-2ze2qhf8lmp5kgsx**** Ready agent 132m v1.20.6 k8s-master Ready control-plane,master 169m v1.20.6Simpan konten berikut sebagai file 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**** # Tentukan nama VNode.Buat Deployment.
kubectl apply -f deploy-vnode-test2.yaml