Dalam skenario Cloud Hibrida, penjadwalan elastis multitingkat memungkinkan bisnis Anda yang diterapkan di lingkungan on-premises dan cloud untuk lebih memanfaatkan keunggulan Cloud Hibrida. Fitur ini membantu mencapai Ketersediaan tinggi serta memungkinkan permintaan sumber daya elastis berdasarkan periode puncak dan tidak sibuk. Topik ini menjelaskan cara mengimplementasikan penjadwalan elastis multitingkat dengan ack-co-scheduler.
Prasyarat
Kluster terdaftar telah dibuat dan kluster Kubernetes eksternal telah dihubungkan ke kluster terdaftar tersebut. Untuk informasi selengkapnya, lihat Buat kluster terdaftar di Konsol ACK.
Tabel berikut mencantumkan versi yang diperlukan untuk komponen sistem.
Komponen
Persyaratan versi
Kubernetes
1.18.8 atau yang lebih baru
Helm
3.0 atau yang lebih baru
Docker
19.03.5
Sistem operasi
CentOS 7.6, CentOS 7.7, Ubuntu 16.04, Ubuntu 18.04, dan Alibaba Cloud Linux
Informasi latar belakang
Penjadwalan elastis multitingkat dalam skenario Cloud Hibrida merupakan perluasan dari penjadwalan prioritas sumber daya elastis kustom dengan penambahan tipe sumber daya elastis IDC. Penjadwalan prioritas sumber daya elastis kustom adalah kebijakan penjadwalan elastis yang disediakan oleh Alibaba Cloud. Selama Penerapan atau penskalaan aplikasi, Anda dapat menyesuaikan kebijakan sumber daya (ResourcePolicy) untuk mengatur urutan penjadwalan Pod instans aplikasi ke berbagai jenis sumber daya node. Selama skala-masuk, Pod dihapus dalam urutan terbalik dari urutan penjadwalan awal. Untuk informasi selengkapnya, lihat Penjadwalan prioritas sumber daya elastis kustom.
Batasan
Fitur ini bertentangan dengan pod-deletion-cost dan tidak dapat digunakan secara bersamaan. Untuk informasi selengkapnya tentang pod-deletion-cost, lihat pod-deletion-cost.
Fitur ini saat ini tidak mendukung penggunaan campuran dengan penjadwalan elastis ECI. Untuk informasi selengkapnya tentang penjadwalan elastis ECI, lihat Implementasikan penjadwalan elastis ECI menggunakan ElasticResource (Tidak lagi dipelihara).
Saat Anda memodifikasi ResourcePolicy, Pod yang telah dijadwalkan akan diskala-masuk berdasarkan urutan ResourcePolicy asli, sedangkan Pod yang baru dibuat akan diskala-masuk berdasarkan urutan ResourcePolicy yang diperbarui.
Saat digunakan bersama kelompok node elastis, fitur ini dapat menyebabkan pengusiran node dari kelompok node elastis menjadi tidak efektif. Saat menggunakan fitur ini, masukkan kelompok node elastis ke dalam Unit dan jangan atur bidang max untuk Unit yang berisi kelompok node elastis tersebut.
Jangan memodifikasi ResourcePolicy saat Pod yang terkait dengannya belum sepenuhnya dihapus.
Penggunaan
Gunakan konten berikut untuk membuat ResourcePolicy yang menentukan prioritas sumber daya elastis.
apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
name: xxx
namespace: xxx
spec:
selector:
key1: value1
strategy: prefer
units:
- resource: idc
max: 3
- resource: ecs
nodeSelector:
key2: value2
- resource: ecs
nodeSelector:
key3: value3
- resource: eciselector: Menentukan bahwa ResourcePolicy berlaku untuk Pod di namespace yang sama denganlabelkey1=value1.strategy: Pemilihan strategi penjadwalan. Saat ini, hanyapreferyang didukung.units: Unit penjadwalan yang ditentukan pengguna. Selama skala keluar, sumber daya ditambahkan sesuai urutan yang ditentukan dalamunits. Selama skala-masuk, sumber daya dihapus dalam urutan terbalik.resource: Jenis sumber daya elastis. Saat ini,eci,ecs, danidcdidukung.nodeSelector: Menggunakannodelabelsuntuk mengidentifikasi node dalam unit penjadwalan. Ini hanya berlaku untuk sumber dayaecs.max: Jumlah maksimum instans yang dapat diterapkan dalam kelompok sumber daya ini.
Instal komponen terkait
Untuk menggunakan penjadwalan elastis multitingkat, Anda perlu menginstal komponen-komponen berikut.
ack-virtual-node: Komponen opsional. Anda perlu menginstal komponen ack-virtual-node di kluster terdaftar hanya jika ingin menggunakan kemampuan ECI elastis.
ack-co-scheduler: Komponen ini memungkinkan Anda menentukan objek CR ResourcePolicy kustom dan menggunakan fitur penjadwalan elastis multitingkat.
Instal dengan onectl
Instal onectl di mesin on-premises Anda. Untuk informasi selengkapnya, lihat Gunakan onectl untuk mengelola kluster terdaftar.
Jalankan perintah berikut untuk menginstal komponen ack-virtual-node dan ack-co-scheduler.
onectl addon install ack-virtual-node onectl addon install ack-co-schedulerKeluaran yang diharapkan:
Addon ack-virtual-node, version **** installed. Addon ack-co-scheduler, version **** installed.
Instal melalui konsol
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, klik Components.
Pada halaman Components, cari komponen ack-virtual-node dan ack-co-scheduler di kotak pencarian, lalu klik Install di pojok kanan bawah masing-masing kartu komponen.
Pada kotak dialog yang muncul, klik OK.
Skenario 1: Penjadwalan prioritas multitingkat
Gunakan konten YAML berikut untuk membuat ResourcePolicy yang menyesuaikan urutan penjadwalan kelompok node.
apiVersion: scheduling.alibabacloud.com/v1alpha1 kind: ResourcePolicy metadata: name: cost-balance-policy spec: selector: app: nginx strategy: prefer units: - resource: idc - resource: ecs nodeSelector: alibabacloud.com/nodepool-id=np7b30bxxxxxxa3940936c19ea42b # Ganti dengan ID Node aktual Anda - resource: eciGunakan konten YAML berikut untuk membuat Penyebaran yang menerapkan 2 Pod.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx annotations: addannotion: "true" labels: app: nginx # Ini harus cocok dengan selector pada ResourcePolicy yang dibuat pada langkah sebelumnya. spec: schedulerName: ack-co-scheduler containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: requests: cpu: 200m limits: cpu: 1Jalankan perintah berikut untuk membuat aplikasi Nginx.
kubectl apply -f nginx.yamlJalankan perintah berikut untuk memperluas kapasitas Pod.
kubectl scale deployment nginx --replicas 10Keluaran yang diharapkan:
deployment.apps/nginx scaledJalankan perintah berikut untuk memeriksa status Pod.
kubectl get pod -o wideKeluaran yang diharapkan:
Setelah mengontrol jumlah replika untuk aplikasi Nginx dan memeriksa hasil penjadwalan, Anda dapat melihat bahwa strategi penerapan sesuai harapan: urutan penjadwalan sumber daya memprioritaskan sumber daya IDC, diikuti oleh sumber daya ECS, dan terakhir sumber daya ECI.
Skenario 2: Penerapan hibrida lintas lingkungan on-premises dan cloud
Gunakan konten YAML berikut untuk membuat ResourcePolicy yang menyesuaikan urutan penjadwalan kelompok node.
apiVersion: scheduling.alibabacloud.com/v1alpha1 kind: ResourcePolicy metadata: name: load-balance-policy spec: selector: app: nginx strategy: prefer units: - resource: idc max: 2 - resource: ecs nodeSelector: alibabacloud.com/nodepool-id=np7b30b52e99194275a3940936c19ea42b max: 4 - resource: eciGunakan konten YAML berikut untuk membuat Penyebaran yang menerapkan 2 Pod.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: nginx annotations: addannotion: "true" labels: app: nginx # Ini harus cocok dengan selector pada ResourcePolicy yang dibuat pada langkah sebelumnya. spec: schedulerName: ack-co-scheduler containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: requests: cpu: 200m limits: cpu: 1Jalankan perintah berikut untuk membuat aplikasi Nginx.
kubectl apply -f nginx.yamlJalankan perintah berikut untuk memperluas kapasitas Pod.
kubectl scale deployment nginx --replicas 10Keluaran yang diharapkan:
deployment.apps/nginx scaledJalankan perintah berikut untuk memeriksa status Pod.
kubectl get pod -o wideKeluaran yang diharapkan:
Setelah mengontrol jumlah replika untuk aplikasi Nginx dan memeriksa hasil penjadwalan, Anda dapat melihat bahwa strategi penerapan sesuai harapan: ketika sumber daya mencukupi, 2 Pod berada di IDC, 4 Pod berada di ECS, dan sisa replika berada di ECI.