Untuk kluster ACK Serverless Container Service for Kubernetes (ACK), semua pod berjalan pada node virtual tanpa perlu dijadwalkan. Secara default, node virtual tersebut menggunakan arsitektur x86. Untuk kluster ACK yang menggunakan instance Elastic Compute Service (ECS) pada node nyata dan instance kontainer elastis pada node virtual, pod dijadwalkan ke node nyata secara default. Anda dapat menjadwalkan pod ke node virtual sesuai dengan kebutuhan bisnis Anda. Topik ini menjelaskan cara menjadwalkan pod dalam kluster ACK ke node virtual berbasis x86 untuk menjalankan pod pada Elastic Container Instance.
Ikhtisar metode penjadwalan
Anda dapat menggunakan salah satu metode berikut untuk menjadwalkan pod ke node virtual berbasis x86:
Untuk menggunakan metode berikut, Anda harus memodifikasi sumber daya yang ada. Modifikasi tersebut dapat memperkenalkan kerentanan ke dalam sistem Anda. Kami menyarankan agar Anda mengonfigurasi eci-profile untuk secara otomatis menjadwalkan pod dengan label tertentu agar berjalan pada Elastic Container Instance. Untuk informasi lebih lanjut, lihat Konfigurasikan eci-profile.
Jika Anda menggunakan metode penjadwalan dengan menambahkan label pod atau label namespace atau menentukan nodeName, provisioner tidak mendukung
WaitForFirstConsumerStorageClass ketika volume disk yang diprovision secara dinamis dipasang ke pod berbasis Elastic Container Instance. Untuk informasi lebih lanjut, lihat Gunakan volume disk yang diprovision secara dinamis.
Konfigurasikan Label Pod
Jika Anda ingin menjadwalkan sejumlah kecil pod untuk berjalan pada Elastic Container Instance, Anda dapat menambahkan label tertentu ke pod tersebut. Kemudian, pod tersebut akan berjalan pada node virtual berbasis x86.
Konfigurasikan Label Namespace
Jika Anda ingin menjadwalkan sekelompok pod untuk berjalan pada Elastic Container Instance, Anda dapat membuat namespace dan menambahkan label tertentu ke namespace tersebut. Semua pod dalam namespace tersebut kemudian akan berjalan pada node virtual berbasis x86.
(Tidak Direkomendasikan) Metode Lainnya
Secara default, label dan taint telah dikonfigurasi untuk node virtual berbasis x86. Anda dapat mengonfigurasi bidang nodeSelector dan tolerations untuk pod agar pod dijadwalkan untuk berjalan pada node virtual berbasis x86. Anda juga dapat menentukan bidang nodeName untuk menjadwalkan pod agar berjalan pada node virtual berbasis x86.
Metode 1: Konfigurasikan label pod
Anda dapat menambahkan label alibabacloud.com/eci=true ke pod untuk menjadwalkan pod agar berjalan pada Elastic Container Instance.
Anda juga dapat menambahkan label eci=true ke pod, tetapi kami menyarankan agar Anda tidak menggunakan label ini.
Prosedur:
Buat file konfigurasi YAML untuk pod yang ingin Anda buat.
vim test-pod.yamlContoh file test-pod.yaml:
apiVersion: v1 kind: Pod metadata: name: nginx1 labels: alibabacloud.com/eci: "true" # Tambahkan label. spec: containers: - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: Always name: nginxBuat pod.
kubectl create -f test-pod.yaml
Metode 2: Konfigurasikan label namespace
Anda dapat membuat namespace dan menambahkan label alibabacloud.com/eci=true ke namespace tersebut. Semua pod dalam namespace tersebut kemudian dijadwalkan untuk berjalan pada Elastic Container Instance.
Anda juga dapat menambahkan label virtual-node-affinity-injection=enabled ke namespace, tetapi kami menyarankan agar Anda tidak menggunakan label ini.
Prosedur:
Buat namespace.
kubectl create ns vkTambahkan label ke namespace.
kubectl label namespace vk alibabacloud.com/eci=trueBuat file konfigurasi YAML untuk pod yang ingin Anda buat.
vim test-pod.yamlContoh file test-pod.yaml:
apiVersion: v1 kind: Pod metadata: name: nginx namespace: vk # Tentukan namespace yang Anda tambahkan label di Langkah 2. spec: containers: - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: Always name: nginxBuat pod.
kubectl create -f test-pod.yaml
Metode 3: (Tidak direkomendasikan) Metode lainnya
Anda dapat menggunakan metode lain seperti mengonfigurasi bidang nodeSelector dan tolerations atau menentukan bidang nodeName untuk menjadwalkan pod agar berjalan pada Elastic Container Instance.
Prosedur:
Buat file konfigurasi YAML untuk pod yang ingin Anda buat.
vim test-pod.yamlContoh file test-pod.yaml:
Konfigurasikan bidang nodeSelector dan tolerations.
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: Always name: nginx nodeSelector: # Konfigurasikan nodeSelector. type: virtual-kubelet tolerations: # Konfigurasikan tolerations. - key: virtual-kubelet.io/provider operator: ExistsTentukan bidang nodeName.
apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 imagePullPolicy: Always name: nginx nodeName: virtual-kubelet-cn-beijing-g # Tentukan nama node.
Buat pod.
kubectl create -f test-pod.yaml