Penjadwalan berbasis Elastic Container Instance adalah kebijakan penjadwalan yang disediakan oleh Alibaba Cloud untuk mengelola sumber daya elastis. Anda dapat menambahkan anotasi untuk menentukan sumber daya yang digunakan saat menerapkan aplikasi, seperti hanya menggunakan instance Elastic Compute Service (ECS), hanya instance kontainer elastis, atau meminta instance kontainer elastis ketika sumber daya ECS tidak mencukupi. Penjadwalan ini mendukung berbagai skenario beban kerja. Topik ini menjelaskan cara menggunakannya.
Versi Kubernetes 1.18 hingga 1.24 tetap mendukung kemampuan penjadwalan elastis dalam Elastic Container Instance. Sejak Mei 2023, Container Service for Kubernetes (ACK) telah menghentikan pemeliharaan fitur ini untuk kluster yang menjalankan Kubernetes v1.24 atau lebih baru. Kami merekomendasikan penggunaan salah satu solusi berikut:
Konfigurasikan Alokasi Sumber Daya Berdasarkan Instance ECS dan Instance Kontainer Elastis: Gunakan fitur penjadwalan asli Kubernetes, seperti taints, tolerations, dan node affinity, untuk menegakkan kebijakan penjadwalan seperti hanya Elastic Container Instance, hanya ECS, atau preferensi ECS untuk pod.
Konfigurasikan Penjadwalan Sumber Daya Berbasis Prioritas: Dibandingkan dengan penjadwalan Kubernetes asli, ResourcePolicy menawarkan strategi yang lebih canggih dan fleksibel, termasuk:
Penjadwalan prioritas ke instance ECS berbasis langganan, diikuti oleh instance ECS bayar sesuai pemakaian, dan akhirnya instance kontainer elastis.
Pengurangan skala turun dalam urutan terbalik selama pengurangan sumber daya.
Kemampuan migrasi non-intrusif untuk pod yang sedang berjalan.
Untuk perbandingan rinci dan rekomendasi tentang solusi penjadwalan node virtual, lihat Jadwalkan Pod ke Node Virtual.
Prasyarat
Tipe kluster adalah ACK managed Pro cluster.
Anda menggunakan versi scheduler berikut berdasarkan versi Kubernetes dari kluster. Untuk informasi lebih lanjut tentang fitur dari berbagai versi scheduler, lihat kube-scheduler.
Versi Kubernetes
Versi Scheduler
1.18
v1.18-ack-3.0 dan yang lebih baru
1.20
v1.20.4-ack-4.0 dan yang lebih baru
1.22
v1.22.3-ack-1.0 dan yang lebih baru
1.24
v1.24.3-ack-2.0 dan yang lebih baru
Komponen ack-virtual-node diterapkan di kluster. Untuk informasi lebih lanjut, lihat Jadwalkan Pod ke Instance Kontainer Elastis.
Konfigurasi
Untuk mendeklarasikan jenis sumber daya elastis untuk sebuah pod, tambahkan anotasi alibabacloud.com/burst-resource ke metadata pod. Nilai valid dan aturan penggunaannya adalah sebagai berikut:
Anotasi ditambahkan di bawah bagian metadata pod. Misalnya, saat membuat Deployment, tambahkan anotasi di bawah spec.template.metadata.
Jika nilainya dibiarkan kosong, hanya sumber daya ECS yang ada di kluster yang digunakan. Ini adalah pengaturan default.
eci_only: Hanya instance kontainer elastis yang digunakan. Sumber daya ECS di kluster tidak digunakan.eci: Instance kontainer elastis digunakan ketika sumber daya ECS di kluster tidak mencukupi.Pentingalibabacloud.com/burst-resource: ecibertentangan denganalibabacloud.com/fluid-sidecar-target: eci. Untuk contoh penggunaanalibabacloud.com/fluid-sidecar-target, lihat Percepat Akses Data dalam Komputasi Awan Tanpa Server dan topik terkait.
Penjadwalan pod gagal jika:
Nilai anotasi bukan
eciataueci_only.Nilainya adalah
eci_onlytetapi tidak ada node virtual di kluster.
Dalam Kubernetes v1.22.15 dan v1.24.6, hubungan antara kegagalan penjadwalan pod dan pesan PodStatus adalah sebagai berikut:
Nilainya bukan eci atau eci_only:
requesttypemustbeeci,eci_onlyorecs.Nilainya adalah eci_only tetapi tidak ada node virtual:
doesn'tfitecitype:eci_only.
Contoh
Buat file bernama
nginx-deployment.yamldan salin konten berikut ke file tersebut:apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: name: nginx annotations: alibabacloud.com/burst-resource: eci # Tentukan jenis sumber daya yang ingin digunakan untuk penjadwalan elastis. labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: limits: cpu: 2 requests: cpu: 2Jalankan perintah berikut untuk membuat pod yang menggunakan penjadwalan berbasis Elastic Container Instance:
kubectl apply -f nginx-deployment.yaml