Saat menggunakan klaster Container Service for Kubernetes (ACK), Anda mungkin perlu membuat banyak pod dalam waktu singkat. Jika Anda memilih untuk membuat Instance ECS untuk pod tersebut, proses penskalaan akan memakan waktu. Jika Anda memilih untuk memesan Instance ECS, sumber daya akan terbuang. Dengan node virtual ACK, Anda dapat dengan cepat menjadwalkan pod ke instance kontainer elastis tanpa harus membeli atau mengelola Instance ECS. Topik ini menjelaskan cara menjadwalkan pod ke instance kontainer elastis dalam klaster ACK yang dikelola.
Skenario
Anda dapat menggunakan instance kontainer elastis untuk menangani lonjakan lalu lintas dan mengurangi biaya komputasi. Instance kontainer elastis cocok untuk skenario berikut:
Layanan online dengan fluktuasi lalu lintas yang jelas
Lalu lintas dari layanan pendidikan online, e-commerce, dan lainnya biasanya memiliki fluktuasi lalu lintas yang jelas. Menggunakan pod berbasis Elastic Container Instance dapat merespons lonjakan lalu lintas lebih cepat dan mengurangi pemeliharaan kumpulan sumber daya tetap. Ini membantu Anda mengurangi biaya komputasi.
Tugas komputasi non-kontinu
Gunakan pod berbasis Elastic Container Instance untuk menjalankan tugas komputasi. Dengan cara ini, Anda tidak perlu menyediakan node. Anda hanya membayar untuk sumber daya komputasi yang digunakan selama eksekusi tugas. Ini mengurangi biaya komputasi. Tugas-tugas tersebut mencakup tugas Spark dan AI.
Prasyarat
Versi Kubernetes dari klaster ACK adalah 1.16 atau lebih baru, dan wilayah tempat klaster berada mendukung instance kontainer elastis.
Periksa apakah wilayah klaster didukung. Untuk informasi lebih lanjut, lihat Wilayah dan zona. Masuk ke Konsol Elastic Container Instance untuk mengaktifkan layanan Elastic Container Instance.
Prosedur
Langkah 1: Terapkan komponen ack-virtual-node
Operasi berikut menggunakan klaster ACK yang dikelola sebagai contoh. Untuk klaster ACK khusus, Anda perlu menerapkan komponen ack-virtual-node di halaman Marketplace. Untuk informasi lebih lanjut, lihat Terapkan ack-virtual-node.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Add-ons, temukan ACK Virtual Node pada tab Komponen Inti, dan klik Install. Ikuti petunjuk yang disediakan di halaman.
Selama instalasi, gunakan vSwitch default dan grup keamanan klaster sebagai konfigurasi default dari instance kontainer elastis. Untuk informasi lebih lanjut tentang cara memodifikasi konfigurasi, lihat Konfigurasikan eci-profile.
Langkah 2: Jadwalkan pod ke instance kontainer elastis
Operasi berikut menggunakan metode penambahan label ke pod atau namespace sebagai contoh untuk menunjukkan cara menjadwalkan pod ke node virtual untuk dijalankan pada instance kontainer elastis. Untuk informasi lebih lanjut tentang solusi penjadwalan, lihat Jadwalkan pod ke node virtual.
Tambahkan label ke pod
Untuk menjadwalkan pod tertentu agar berjalan pada instance kontainer elastis, tambahkan label seperti alibabacloud.com/eci: "true". Pod tersebut akan dijadwalkan ke node virtual arsitektur x86 untuk dijalankan sebagai instance kontainer elastis.
Buat Deployment menggunakan file YAML berikut:
kubectl create -f eci-pod.yamlBerikut adalah contoh file eci-pod.yaml:
CatatanFile YAML berikut menentukan spesifikasi instance kontainer elastis berbasis pod menggunakan anotasi
k8s.aliyun.com/eci-use-specs. Untuk informasi lebih lanjut tentang cara mengonfigurasi spesifikasi instance kontainer elastis berbasis pod, lihat Tentukan spesifikasi komputasi instance kontainer elastis.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 tertentu untuk menjadwalkan pod ke instance kontainer elastis annotations: k8s.aliyun.com/eci-use-specs: "2-4Gi" # Tentukan bahwa pod berbasis Elastic Container Instance memiliki 2 vCPU dan 4 GiB memori spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80Verifikasi apakah pod sedang berjalan di node virtual.
kubectl get pod -o wide -l app=nginxOutput yang diharapkan adalah sebagai berikut. Di bidang
NODE, Anda dapat melihat bahwa pod telah dijadwalkan ke 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 berbasis Elastic Container Instance.
kubectl get pod <pod-name> -o yamlDalam file YAML yang dikembalikan, Anda dapat memperoleh ID instance kontainer elastis yang sesuai berdasarkan bidang
k8s.aliyun.com/eci-instance-iddan konfirmasi spesifikasi penagihan aktual pod berbasis Elastic Container Instance berdasarkan bidangk8s.aliyun.com/eci-instance-spec.
Tambahkan label ke namespace
Untuk menjadwalkan sekelompok pod agar berjalan pada instance kontainer elastis, buat namespace dan tambahkan label seperti alibabacloud.com/eci: "true". Semua pod dalam namespace ini akan dijadwalkan ke node virtual arsitektur x86 untuk dijalankan sebagai instance kontainer elastis.
Buat namespace bernama
vkdan tambahkan label tertentu ke namespace.kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=trueBuat Deployment di namespace
vkmenggunakan file YAML berikut:kubectl create -f eci-namespace.yamlBerikut adalah contoh file eci-namespace.yaml:
CatatanFile YAML berikut menentukan spesifikasi instance kontainer elastis berbasis pod menggunakan anotasi
k8s.aliyun.com/eci-use-specs. Untuk informasi lebih lanjut tentang cara mengonfigurasi spesifikasi instance kontainer elastis berbasis pod, lihat Tentukan spesifikasi komputasi instance kontainer elastis.apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: vk # Tentukan namespace dengan label tertentu untuk menjadwalkan pod ke instance kontainer elastis 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 bahwa pod berbasis Elastic Container Instance memiliki 2 vCPU dan 4 GiB memori spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80Verifikasi apakah pod sedang berjalan di node virtual.
kubectl get pod -o wide -l app=nginx -n vkOutput yang diharapkan adalah sebagai berikut. Di bidang
NODE, Anda dapat melihat bahwa pod telah dijadwalkan ke 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 berbasis Elastic Container Instance.
kubectl get pod <pod-name> -o yaml -n vkDalam file YAML yang dikembalikan, Anda dapat memperoleh ID instance kontainer elastis yang sesuai berdasarkan bidang
k8s.aliyun.com/eci-instance-iddan konfirmasi spesifikasi penagihan aktual pod berbasis Elastic Container Instance berdasarkan bidangk8s.aliyun.com/eci-instance-spec.