Saat menggunakan Knative untuk menerapkan aplikasi, Anda dapat mengonfigurasi Knative agar pod diterapkan pada instance Elastic Compute Service (ECS) yang ada selama jam non-puncak dan secara otomatis membuat instance kontainer elastis untuk menangani lonjakan lalu lintas. Untuk melakukannya, buat ResourcePolicy untuk menentukan prioritas instance ECS dan instance kontainer elastis dalam aktivitas penskalaan keluar. Saat aktivitas penskalaan masuk dilakukan, instance ECS atau instance kontainer elastis dilepaskan berdasarkan prioritas yang ditentukan oleh ResourcePolicy dalam urutan terbalik. Dalam hal ini, instance kontainer elastis lebih disukai untuk dilepaskan.
Knative telah diterapkan di kluster Anda. Untuk informasi lebih lanjut, lihat Terapkan Knative di kluster ACK atau Terapkan Knative di kluster ACK Serverless.
Versi komponen kube-scheduler di kluster Anda sesuai dengan pemetaan berikut.
Versi Kubernetes
Versi kube-scheduler
1.20
1.20.4-ack-7.0 atau lebih baru
1.22
1.22.15-ack-2.0 atau lebih baru
1.24
1.24.3-ack-2.0 atau lebih baru
1.26
1.26.3-ack-4.0 atau lebih baru
1.26 atau lebih baru
Semua versi
Komponen ack-virtual-node telah diterapkan. Komponen ini diperlukan saat menggunakan instance kontainer elastis. Untuk informasi lebih lanjut, lihat Terapkan ack-virtual-node di kluster.
File kubeconfig kluster diperoleh dan kubectl digunakan untuk terhubung ke kluster.
Batasan
Penjadwalan sumber daya berbasis prioritas saling eksklusif dengan fitur biaya penghapusan pod. Untuk informasi lebih lanjut tentang fitur biaya penghapusan pod, lihat Biaya penghapusan pod.
Anda tidak dapat menggunakan penjadwalan sumber daya berbasis prioritas dan penjadwalan berbasis Elastic Container Instance secara bersamaan. Untuk informasi lebih lanjut tentang penjadwalan berbasis Elastic Container Instance, lihat Gunakan penjadwalan berbasis Elastic Container Instance.
Fitur ini menggunakan kebijakan BestEffort dan tidak menjamin bahwa pod dihapus dari node berdasarkan prioritas node dalam urutan menaik ketika sistem menskalakan pod untuk aplikasi.
Parameter max hanya tersedia jika kluster Anda menjalankan Kubernetes 1.22 atau lebih baru dan versi scheduler yang diinstal di kluster Anda adalah 5.0 atau lebih baru.
Jika Anda menggunakan fitur ini bersama dengan kolam node elastis, node yang tidak valid mungkin ditambahkan ke kolam node elastis. Pastikan bahwa kolam node elastis termasuk dalam unit. Jangan tentukan parameter max untuk unit tersebut.
Jika Anda menggunakan versi scheduler sebelum 5.0 atau versi Kubernetes kluster Anda adalah 1.20 atau lebih lama, pod yang sudah ada sebelum ResourcePolicy dibuat diprioritaskan selama aktivitas penskalaan masuk.
Jika Anda menggunakan versi scheduler sebelum 6.1 atau versi Kubernetes kluster Anda adalah 1.20 atau lebih lama, jangan modifikasi ResourcePolicy sebelum semua pod yang dipilih oleh ResourcePolicy dihapus.
Prosedur
Buat ResourcePolicy untuk menentukan prioritas sumber daya elastis yang berbeda. Dalam contoh ini, instance ECS memiliki prioritas lebih tinggi daripada instance kontainer elastis. Ketika instance ECS tidak mencukupi atau jumlah pod yang diterapkan pada instance ECS mencapai batas atas, instance kontainer elastis dibuat untuk menampung pod. Saat aplikasi diskalakan masuk, instance kontainer elastis lebih disukai untuk dilepaskan.
Buat Layanan Knative.
Kode sampel berikut digunakan sebagai contoh:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"Buat ResourcePolicy dan tentukan parameter
maxdannodeSelectoruntuk setiap sumber daya node. Parameter max menentukan jumlah maksimum pod yang dapat diterapkan pada sumber daya elastis saat ini.Kode sampel berikut digunakan sebagai contoh. Contoh sampel berikut menggambarkan bagaimana instance ECS diprioritaskan untuk penjadwalan pod. Ketika jumlah pod yang diterapkan pada instance ECS mencapai batas atas yang ditentukan oleh
maxatau instance ECS tidak mencukupi, instance kontainer elastis secara otomatis dibuat untuk menampung pod.apiVersion: scheduling.alibabacloud.com/v1alpha1 kind: ResourcePolicy metadata: name: xxx namespace: xxx spec: selector: serving.knative.dev/service: helloworld-go # Tentukan nama Layanan Knative. strategy: prefer units: - resource: ecs max: 10 nodeSelector: key2: value2 - resource: ecs nodeSelector: key3: value3 - resource: eci
Referensi
Untuk informasi lebih lanjut tentang cara menentukan prioritas sumber daya elastis, lihat Konfigurasikan penjadwalan sumber daya berbasis prioritas.