Jalankan pod di ECI dalam Kluster ACK yang dikelola untuk menangani lonjakan lalu lintas tanpa mengelola Instance ECS.
Catatan penggunaan
Untuk kube-scheduler v6.11.0 atau yang lebih baru, jika lebih dari 1.000 pod ACS atau ECI dibuat secara konkuren dengan menambahkan label, lakukan upgrade ke versi terbaru dan aktifkan fitur gate SchedulerBatchMoveEvents=true.
Kasus penggunaan
Pod ECI menangani lonjakan lalu lintas dan mengurangi biaya komputasi:
-
Layanan online dengan pola lalu lintas yang fluktuatif
Respons lebih cepat terhadap lonjakan lalu lintas, kurangi pemeliharaan kolam sumber daya, dan turunkan biaya komputasi.
-
Tugas komputasi berumur pendek atau batch
Tidak memerlukan pemeliharaan node khusus. Bayar hanya untuk sumber daya komputasi yang digunakan selama eksekusi, sehingga mengurangi biaya untuk workload seperti pekerjaan Spark dan AI.
Prasyarat
Kluster ACK menjalankan Kubernetes 1.16 atau yang lebih baru di wilayah yang mendukung ECI.
Periksa wilayah yang didukung di Wilayah dan zona yang didukung oleh ECI, lalu login ke Konsol Elastic Container Instance untuk mengaktifkan ECI.
Prosedur
Langkah 1: Deploy komponen ack-virtual-node
Langkah-langkah berikut menggunakan contoh Kluster ACK yang dikelola. Untuk Cluster khusus ACK, deploy ack-virtual-node dari halaman Marketplace. Lihat Deploy komponen ack-virtual-node.
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons.
Di halaman Add-ons, klik tab Core Components, temukan ACK Virtual Node, lalu klik Install. Ikuti petunjuk di layar untuk menyelesaikan instalasi.
Selama instalasi, vSwitch dan security group default kluster digunakan sebagai parameter konfigurasi awal ECI. Untuk mengubah parameter tersebut, Anda dapat memperbaruinya dengan mengonfigurasi eci-profile.
Langkah 2: Jadwalkan pod ke ECI
Contoh berikut menjadwalkan pod ke ECI dengan memberi label pada pod atau namespace. Lihat Jadwalkan Pod ke node virtual untuk metode lainnya.
Pod
Tambahkan label alibabacloud.com/eci: "true" ke pod untuk menjadwalkannya ke node virtual berarsitektur x86 sebagai pod ECI.
-
Buat Deployment dari file YAML berikut.
kubectl create -f eci-pod.yamlContoh
eci-pod.yaml:CatatanAnotasi
k8s.aliyun.com/eci-use-specsmenentukan spesifikasi komputasi pod ECI. Lihat Tentukan spesifikasi komputasi pod ECI.apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx alibabacloud.com/eci: "true" # Tambahkan label ini untuk menjadwalkan Pod ke ECI. annotations: k8s.aliyun.com/eci-use-specs: "2-4Gi" # Tentukan 2 vCPU dan memori 4 GiB untuk pod ECI. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Verifikasi bahwa Pod berjalan di node virtual.
kubectl get pod -o wide -l app=nginxOutput yang diharapkan. Kolom
NODEmenunjukkan node virtual.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-86f7fbc94f-g5m22 1/1 Running 0 38s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> test-86f7fbc94f-r4wcn 1/1 Running 0 38s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> -
Lihat detail pod ECI.
kubectl get pod <pod-name> -o yamlPeriksa anotasi
k8s.aliyun.com/eci-instance-iduntuk ID instans ECI dan anotasik8s.aliyun.com/eci-instance-specuntuk spesifikasi komputasi yang digunakan dalam penagihan.
Namespace
Untuk menjalankan kategori pod tertentu di ECI, buat namespace dan tambahkan label alibabacloud.com/eci: "true". Semua pod dalam namespace ini akan dijadwalkan ke node virtual berarsitektur x86 sebagai pod ECI.
-
Buat Namespace bernama
vkdan tambahkan label yang diperlukan.kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=true -
Buat Deployment di namespace
vk.kubectl create -f eci-namespace.yamlContoh
eci-namespace.yaml:CatatanAnotasi
k8s.aliyun.com/eci-use-specsmenentukan spesifikasi komputasi pod ECI. Lihat Tentukan spesifikasi komputasi pod ECI.apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: vk # Tentukan Namespace berlabel untuk menjadwalkan Pod ke ECI. labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx annotations: k8s.aliyun.com/eci-use-specs: "2-4Gi" # Tentukan 2 vCPU dan memori 4 GiB untuk pod ECI. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Verifikasi bahwa Pod berjalan di node virtual.
kubectl get pod -o wide -l app=nginx -n vkOutput yang diharapkan. Kolom
NODEmenunjukkan node virtual.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-8f54bcfb5-86pvc 1/1 Running 0 14s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> test-8f54bcfb5-skvkg 1/1 Running 0 14s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> -
Lihat detail pod ECI.
kubectl get pod <pod-name> -o yaml -n vkPeriksa anotasi
k8s.aliyun.com/eci-instance-iduntuk ID instans ECI dan anotasik8s.aliyun.com/eci-instance-specuntuk spesifikasi komputasi yang digunakan dalam penagihan.