Secara default, kluster ACK dan kluster ACK Serverless menjadwalkan semua workload ke node virtual x86. Jika kluster Anda memiliki node virtual Arm dan non-Arm, gunakan penjadwalan native Kubernetes (nodeSelector atau nodeAffinity) agar workload khusus Arm ditempatkan di node virtual Arm dan gambar multi-arsitektur dapat memprioritaskan node Arm.kluster ACK dan untuk menjadwalkan workload khusus Arm atau multi-arsitektur ke node virtual Arm. Secara default, semua workload dijadwalkan ke node virtual x86.
Prasyarat
Kluster:
Kluster ACK yang menjalankan Kubernetes 1.20 atau versi lebih baru. Lihat Buat kluster ACK yang dikelola dan Lakukan upgrade kluster secara manual.
CatatanInstance ECS berbasis Arm hanya tersedia di wilayah dan zona tertentu. Pastikan kluster Anda berada di wilayah yang didukung. Lihat Ikhtisar tipe instans yang tersedia untuk pembelian.
Add-on ack-virtual-node v2.9.0 atau versi lebih baru telah diinstal. Lihat komponen ack-virtual-node v2.9.0 atau versi lebih baru telah diinstal.
Catatan penggunaan
Untuk kluster yang menjalankan Kubernetes versi sebelum 1.24, tambahkan toleration untuk taint kubernetes.io/arch=arm64:NoSchedule saat menggunakan nodeSelector atau nodeAffinity untuk menjadwalkan workload ke node Arm. Kluster Kubernetes 1.24+ secara otomatis mengenali taint kubernetes.io/arch=arm64:NoSchedule, sehingga toleration tidak diperlukan.
Penagihan
Tipe instans ECS berbasis ARM dan harga:
Langkah 1: Tambahkan node virtual Arm
Buat node virtual Arm dengan mengedit ConfigMap eci-profile menggunakan salah satu metode berikut. Lihat Konfigurasikan eci-profile.
Konsol
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Dari daftar drop-down Namespace, pilih kube-system. Temukan eci-profile dan klik Edit. Atur
enableLinuxArm64Nodemenjaditrue, lalu klik OK.CatatanJika tidak ada vSwitch di kluster Anda yang berada di zona yang mendukung instance berbasis Arm, buat satu di zona yang didukung dan tambahkan ID-nya ke bidang
vSwitchIds. Lihat Buat dan kelola vSwitch.Sekitar 30 detik kemudian, node virtual
virtual-kubelet-<zoneId>-linux-arm64muncul di halaman Nodes.
Kubectl
Prasyarat
Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Prosedur
Edit ConfigMap:
kubectl edit configmap eci-profile -n kube-systemAtur parameter
enableLinuxArm64Nodemenjaditrue.Atur parameter
vSwitchIds. Pastikan setidaknya satu vSwitch dalam daftarvSwitchIdsberada di zona yang mendukung instance berbasis Arm.CatatanJika tidak ada vSwitch di kluster Anda yang berada di zona yang mendukung instance berbasis Arm, buat satu di zona yang didukung dan tambahkan ID-nya ke bidang
vSwitchIds. Lihat Buat dan kelola vSwitch.Sekitar 30 detik kemudian, node virtual
virtual-kubelet-<zoneId>-linux-arm64muncul di halaman Nodes.
Langkah 2: Jadwalkan ke node virtual Arm
Jadwalkan workload khusus Arm
Jika suatu kluster memiliki node Arm dan non-Arm serta aplikasi hanya mendukung arsitektur Arm, jadwalkan ke node Arm untuk mencegah kegagalan startup. Semua node Arm memiliki label kubernetes.io/arch=arm64. Gunakan nodeSelector atau nodeAffinity untuk menargetkannya.
nodeSelector
Tambahkan nodeSelector berikut ke spesifikasi pod untuk menargetkan node virtual Arm. Semua node virtual Arm di kluster ACK atau memiliki label arm64.
nodeSelector:
kubernetes.io/arch: arm64 # Tentukan node Arm.Contoh file YAML berikut menyebarkan aplikasi tanpa status ke node virtual Arm.
nodeAffinity
Prasyarat
fitur penjadwalan node virtual telah diaktifkan untuk kluster, dan versi kluster serta komponen memenuhi persyaratan.
Contoh
Tambahkan nodeAffinity berikut ke spesifikasi pod untuk menargetkan node Arm dengan label kubernetes.io/arch=arm64.
Dengan batasan ini, penjadwal secara otomatis mentoleransi taint kubernetes.io/arch=arm64:NoSchedule.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Contoh file YAML berikut menyebarkan aplikasi tanpa status ke node virtual Arm.
Jadwalkan gambar multi-arsitektur
Prasyarat
fitur penjadwalan node virtual telah diaktifkan untuk kluster, dan versi kluster serta komponen memenuhi persyaratan.
Contoh
Kluster ACK dan kluster ACK Serverless menjadwalkan semua workload ke node virtual x86 secara default dan terus menunggu kapasitas x86 ketika sumber daya x86 tidak mencukupi. dan menjadwalkan semua workload ke node virtual x86 secara default dan terus menunggu sumber daya x86 ketika tidak mencukupi. Untuk gambar multi-arsitektur, konfigurasikan penjadwalan lintas arsitektur untuk menggunakan node x86 dan Arm.
Konfigurasikan afinitas node untuk menjadwalkan workload secara preferensial ke node virtual Arm atau x86. Jika sumber daya yang diprioritaskan tidak mencukupi, penjadwal akan beralih ke arsitektur lainnya.
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Prioritaskan arsitektur Arm
Contoh file YAML untuk workload yang dijadwalkan secara preferensial ke node virtual Arm:
Prioritaskan arsitektur x86
FAQ
Prioritas penjadwalan node Arm dan x86
Penjadwal kluster secara default memprioritaskan instance ECS daripada node virtual. Tanpa bobot plugin skor kustom, pod mungkin tetap dijadwalkan ke instance ECS x86 meskipun nodeAffinity diatur untuk memprioritaskan node Arm. Pengaturan nodeAffinity dalam topik ini hanya menjamin prioritas antar arsitektur node virtual (Arm vs. x86), bukan antara node virtual dan instance ECS.
Apakah saya dapat menggunakan instance preemptible Arm?
Ya. Lihat Gunakan instance preemptible.
Konfigurasi jaringan untuk node virtual Arm
Setelah membuat kluster ACK atau , atur bidang vSwitchIds dalam eci-profile agar mencakup vSwitch di zona yang mendukung instance berbasis Arm.
Apa saja batasan penggunaan node arsitektur Arm di kluster ACK?
Add-on App Marketplace tidak didukung pada arsitektur Arm. Di Pusat Komponen, hanya kategori berikut yang didukung:
Komponen inti
Pencatatan dan pemantauan
Penyimpanan
Jaringan
Referensi
Container Registry Enterprise Edition (ACR EE) memungkinkan Anda membuat gambar kontainer multi-arsitektur.
Untuk membuat dan mengelola node ECS Arm biasa, lihat Jadwalkan workload ke node Arm.
Untuk menjalankan tugas data besar tanpa mengelola sumber daya kluster dasar, jalankan pekerjaan Spark pada node virtual Arm.