Saat Anda perlu membuat banyak Pod secara cepat, penskalaan instans ECS mungkin tidak cukup cepat, dan menyediakan instans tambahan akan membuang sumber daya. Node virtual ACK memungkinkan Anda menjadwalkan Pod ke Elastic Container Instance (ECI) tanpa harus menyediakan atau mengelola instans ECS. Topik ini menjelaskan cara menjadwalkan Pod agar berjalan di ECI dalam Kluster ACK yang dikelola.
Catatan penggunaan
Untuk kube-scheduler v6.11.0 atau versi lebih baru, jika Anda membuat lebih dari 1.000 pod ECI secara bersamaan dengan menambahkan label, lakukan upgrade ke versi terbaru dan aktifkan fitur gate SchedulerBatchMoveEvents=true.
Kasus penggunaan
Menjalankan Pod di ECI sangat ideal untuk menangani lonjakan traffic dan mengurangi biaya komputasi. Kasus penggunaan umum meliputi:
Layanan online dengan pola traffic yang fluktuatif
Pod ECI membantu Anda merespons lonjakan traffic lebih cepat, mengurangi pemeliharaan pada kolam sumber daya tetap, serta menekan biaya komputasi.
Tugas komputasi jangka pendek atau batch
Saat menjalankan tugas komputasi sebagai pod ECI, Anda tidak perlu memelihara Node khusus dan hanya membayar sumber daya komputasi yang digunakan selama eksekusi tugas. Pendekatan ini mengurangi biaya untuk workload seperti pekerjaan Spark dan AI.
Prasyarat
Kluster ACK Anda harus menjalankan Kubernetes 1.16 atau versi lebih baru dan berada di wilayah yang mendukung ECI.
Untuk memeriksa apakah wilayah kluster Anda didukung, lihat Wilayah dan zona yang didukung oleh ECI. Kemudian, login ke Konsol Elastic Container Instance untuk mengaktifkan layanan ECI.
Prosedur
Langkah 1: Deploy komponen ack-virtual-node
Langkah-langkah berikut menggunakan contoh Kluster ACK yang dikelola. Untuk Cluster khusus ACK, Anda harus mendeploy komponen ack-virtual-node dari halaman Marketplace. Untuk informasi lebih lanjut, 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 menunjukkan cara menjadwalkan Pod ke node virtual agar berjalan di ECI dengan menambahkan label ke Pod atau Namespace. Untuk metode penjadwalan lainnya, lihat Jadwalkan Pod ke node virtual.
Pod
Untuk menjalankan Pod individual di ECI, tambahkan label alibabacloud.com/eci: "true" ke Pod tersebut. Hal ini akan menjadwalkan Pod ke node virtual arsitektur x86 untuk berjalan sebagai pod ECI.
Buat Deployment dari file YAML berikut.
kubectl create -f eci-pod.yamlKode berikut menunjukkan contoh file
eci-pod.yaml:CatatanPada YAML berikut, anotasi
k8s.aliyun.com/eci-use-specsmenentukan spesifikasi komputasi untuk pod ECI. Untuk informasi lebih lanjut tentang mengonfigurasi spesifikasi 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 4 GiB memori untuk pod ECI. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80Verifikasi bahwa Pod berjalan di node virtual.
kubectl get pod -o wide -l app=nginxOutput yang diharapkan menunjukkan bahwa Pod telah dijadwalkan ke node virtual, sebagaimana terlihat pada kolom
NODE.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 yamlPada output YAML, temukan ID instans ECI yang sesuai dalam anotasi
k8s.aliyun.com/eci-instance-iddan konfirmasi spesifikasi komputasi pod ECI yang digunakan untuk penagihan dalam anotasik8s.aliyun.com/eci-instance-spec.
Namespace
Jika Anda ingin menjalankan kategori tertentu Pod di ECI, Anda dapat membuat Namespace dan menambahkan label alibabacloud.com/eci: "true" ke Namespace tersebut. Semua Pod yang dibuat dalam Namespace ini kemudian akan dijadwalkan ke node virtual arsitektur x86 untuk berjalan sebagai pod ECI.
Buat Namespace bernama
vkdan tambahkan label yang diperlukan.kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=trueGunakan YAML berikut untuk membuat Deployment di namespace
vk.kubectl create -f eci-namespace.yamlKode berikut menunjukkan contoh file
eci-namespace.yaml:CatatanPada YAML berikut, anotasi
k8s.aliyun.com/eci-use-specsmenentukan spesifikasi komputasi untuk pod ECI. Untuk informasi lebih lanjut tentang mengonfigurasi spesifikasi 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 4 GiB memori untuk pod ECI. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80Verifikasi bahwa Pod berjalan di node virtual.
kubectl get pod -o wide -l app=nginx -n vkOutput yang diharapkan menunjukkan bahwa Pod telah dijadwalkan ke node virtual, sebagaimana terlihat pada kolom
NODE.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 vkPada output YAML, temukan ID instans ECI yang sesuai dalam anotasi
k8s.aliyun.com/eci-instance-iddan konfirmasi spesifikasi komputasi pod ECI yang digunakan untuk penagihan dalam anotasik8s.aliyun.com/eci-instance-spec.