Jika kluster Anda berisi node ARM dan x86, Anda dapat menggunakan fitur penjadwalan native Kubernetes untuk menjadwalkan workload khusus ARM ke node ARM atau memberikan preferensi penjadwalan workload multi-arsitektur ke node ARM.
Prasyarat
Kluster ACK yang dikelola yang menjalankan Kubernetes 1.20 atau lebih baru di Alibaba Cloud Linux 3. Untuk informasi selengkapnya, lihat Buat kluster ACK yang dikelola dan Tingkatkan kluster.
CatatanDi Core Components, hanya komponen dalam Core Components, Volumes, Network, dan Network yang didukung di kelompok node ARM.
Komponen Marketplace tidak didukung di kelompok node ARM.
Komponen kube-scheduler telah dipasang. Untuk informasi selengkapnya, lihat Manage components.
Catatan penggunaan
Jika kluster ACK Anda berisi node ARM dan x86, tambahkan taint kubernetes.io/arch=arm64:NoSchedule ke node ARM Anda. Hal ini mencegah aplikasi dan komponen yang tidak mendukung arsitektur ARM dijadwalkan secara keliru ke node tersebut. Jika kluster Anda menjalankan versi Kubernetes sebelum v1.24, Anda juga harus mendeklarasikan toleransi terhadap taint kubernetes.io/arch=arm64:NoSchedule saat menggunakan nodeSelector atau nodeAffinity untuk menjadwalkan aplikasi ke node ARM. Untuk melakukannya, tambahkan kunci tolerations yang sesuai untuk taint kubernetes.io/arch=arm64:NoSchedule. Untuk kluster yang menjalankan Kubernetes v1.24 atau lebih baru, penjadwal secara otomatis mengenali taint kubernetes.io/arch=arm64:NoSchedule pada node ARM, sehingga toleration tidak diperlukan.
Tagihan
Untuk informasi selengkapnya tentang tipe instans ECS yang menggunakan arsitektur ARM dan harganya, lihat topik berikut:
Buat kluster atau kelompok node ARM
Anda dapat menambahkan node ARM saat membuat kluster ACK baru atau menambahkan kelompok node ARM ke kluster yang sudah ada.
Saat pembuatan kluster
Saat mengonfigurasi kelompok node selama pembuatan kluster, di bagian Instance Type, atur Architecture ke Arm. Lalu, pilih tipe instans dari keluarga instans tujuan umum g8m dan konfigurasikan parameter lainnya untuk membuat kluster. Untuk informasi selengkapnya tentang cara membuat kluster, lihat Buat kluster ACK yang dikelola.
Buka Tipe Instans ECS yang Tersedia untuk Setiap Wilayah untuk memeriksa ketersediaan instans berdasarkan wilayah.
Di kluster yang sudah ada
Saat membuat kelompok node, di bagian Instance Type, atur Architecture ke Arm. Lalu, pilih tipe instans dan konfigurasikan parameter lainnya untuk membuat kelompok node. Untuk informasi selengkapnya tentang cara membuat kelompok node, lihat Buat dan kelola kelompok node.
Buka Tipe Instans ECS yang Tersedia untuk Setiap Wilayah untuk memeriksa ketersediaan instans berdasarkan wilayah.
Jadwalkan workload khusus ARM ke node ARM
Jika kluster Anda berisi node ARM dan x86, pastikan aplikasi yang hanya mendukung arsitektur ARM dijadwalkan ke node ARM agar pod-nya tidak gagal dimulai di node yang tidak kompatibel. Secara default, semua node ARM memiliki label kubernetes.io/arch=arm64. Anda dapat menggunakan nodeSelector atau nodeAffinity untuk men-deploy aplikasi ke node ARM.
nodeSelector
Tambahkan nodeSelector berikut ke spec pod Anda untuk menjadwalkan pod ke node ARM. Ini menjadwalkan workload hanya ke node dengan label kubernetes.io/arch: arm64, yang ada di semua node ARM dalam kluster ACK.
nodeSelector:
kubernetes.io/arch: arm64 # Tentukan node ARM.Anda dapat menggunakan contoh YAML berikut untuk men-deploy aplikasi tanpa status ke node ARM.
nodeAffinity
Anda dapat menggunakan afinitas node untuk menjadwalkan pod ke node ARM. Aturan berikut menjadwalkan pod hanya ke node dengan label kubernetes.io/arch=arm64.
Saat menggunakan aturan afinitas ini, penjadwal secara otomatis menambahkan toleransi terhadap taint kubernetes.io/arch=arm64:NoSchedule.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Anda dapat menggunakan contoh YAML berikut untuk men-deploy aplikasi tanpa status ke node ARM.
Jadwalkan workload multi-arch ke node ARM
Secara default, ACK menjadwalkan semua workload ke node x86. Jika sumber daya node x86 tidak mencukupi, pod tetap dalam status pending alih-alih dijadwalkan ke node ARM yang tersedia. Jika aplikasi Anda menggunakan gambar multi-arsitektur yang mendukung arsitektur x86 dan ARM, Anda harus mengonfigurasi preferensi penjadwalan untuk memanfaatkan node dengan arsitektur berbeda.
Misalnya, Anda dapat mengonfigurasi afinitas node untuk memberikan preferensi pada node ARM atau x86, lalu beralih ke node arsitektur lain jika node yang diprioritaskan tidak memiliki sumber daya yang cukup.
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Beri preferensi pada node ARM
Beri preferensi pada node x86
FAQ
Apakah saya dapat menggunakan instans preemptible berbasis ARM?
Instans preemptible berbasis ARM tersedia. Untuk detail penggunaan, lihat Gunakan instans preemptible.
Batasan node ARM
Saat ini, hanya kategori Add-on berikut yang mendukung arsitektur ARM:
Core Components
Logs and Monitoring
Storage
Networking
Komponen Marketplace tidak mendukung arsitektur ARM.
Referensi
Anda juga dapat membuat node virtual ARM dan mengonfigurasi workload agar dijadwalkan secara preferensial ke node tersebut. Untuk informasi selengkapnya, lihat Jadwalkan workload ke node virtual ARM.
Anda dapat menggunakan Container Registry Enterprise Edition (ACR EE) untuk membuat gambar kontainer multi-arsitektur. Untuk informasi selengkapnya, lihat Buat gambar kontainer multi-arsitektur.
Jika Anda menjalankan pekerjaan data besar dan ingin menghindari pengelolaan sumber daya kluster dasar, Anda dapat menjalankan pekerjaan Spark di node virtual ARM.