Secara default, Container Service for Kubernetes (ACK) menjadwalkan semua beban kerja ke node pekerja berbasis x86. Jika klaster Anda mencakup node berbasis ARM dan node lainnya, seperti node berbasis x86, Anda dapat mengonfigurasi penjadwalan Kubernetes untuk memprioritaskan menjadwalkan beban kerja ARM hanya ke node berbasis ARM atau menjadwalkan beban kerja multi-arsitektur ke node berbasis ARM.
Prasyarat
Klaster yang menjalankan Kubernetes 1.20 atau versi lebih baru telah dibuat. Sistem operasi klaster adalah Alibaba Cloud Linux 3. Untuk informasi lebih lanjut, lihat Buat Klaster dan Tingkatkan Klaster.
CatatanDi halaman Add-ons, hanya komponen Core Components, Logs and Monitoring, Storage, dan Networking yang dapat digunakan di pool node berbasis ARM.
Komponen yang ditampilkan di halaman Marketplace konsol ACK tidak dapat diterapkan di pool node berbasis ARM.
Komponen kube-scheduler telah terpasang. Untuk informasi lebih lanjut, lihat Kelola Komponen.
Catatan Penggunaan
Jika baik node berbasis ARM maupun node berbasis x86 ada di klaster Anda, kami sarankan Anda menambahkan tanda kubernetes.io/arch=arm64:NoSchedule ke node berbasis ARM. Ini menghindari penjadwalan aplikasi atau komponen yang tidak mendukung arsitektur ARM ke node berbasis ARM secara tidak sengaja. Saat Anda mengonfigurasi nodeSelector atau nodeAffinity untuk menjadwalkan aplikasi ke node berbasis ARM di klaster ACK yang menjalankan versi Kubernetes sebelum 1.24, Anda perlu menambahkan toleration untuk mentoleransi tanda kubernetes.io/arch=arm64:NoSchedule. Namun, jika klaster menjalankan Kubernetes 1.24 atau versi lebih baru, penjadwal otomatis akan mentoleransi tanda kubernetes.io/arch=arm64:NoSchedule. Dalam kasus ini, Anda tidak perlu menambahkan toleration untuk mentoleransi tanda tersebut.
Penagihan
Untuk informasi lebih lanjut tentang jenis instance ECS yang menggunakan arsitektur ARM dan harga dari jenis-jenis ini, lihat topik-topik berikut:
Buat klaster atau pool node berbasis ARM
Saat membuat klaster ACK, Anda dapat menambahkan node berbasis ARM untuk mendapatkan klaster yang hanya berisi node berbasis ARM. Anda juga dapat membuat pool node berbasis ARM di klaster yang sudah ada untuk mendapatkan pool node yang hanya berisi node berbasis ARM.
Buat pool node berbasis ARM saat membuat klaster
Saat mengonfigurasi pool node untuk klaster, pilih Arm untuk parameter Architecture di bagian Instance Type. Lalu, pilih instance umum g8m dan konfigurasikan parameter lainnya berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang item konfigurasi yang diperlukan untuk membuat klaster ACK, lihat Buat Klaster ACK Terkelola.
Anda dapat mengunjungi halaman Jenis Instance ECS yang Tersedia untuk Setiap Wilayah untuk melihat jenis instance yang tersedia di setiap wilayah.
Buat pool node
Saat membuat pool node, atur parameter Architecture menjadi ARM di bagian Instance Type. Lalu, konfigurasikan parameter lainnya berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang parameter pool node, lihat Buat dan Kelola Pool Node.
Anda dapat mengunjungi halaman Jenis Instance ECS yang Tersedia untuk Setiap Wilayah untuk melihat jenis instance yang tersedia di setiap wilayah.
Jadwalkan beban kerja ARM ke node berbasis ARM
Jika klaster Anda mencakup node berbasis ARM dan node lainnya dan semua beban kerja menggunakan arsitektur ARM, Anda harus menjadwalkan beban kerja hanya ke node berbasis ARM. Jika pod dijadwalkan ke node lain, pod tidak dapat diluncurkan. Secara default, semua node berbasis ARM memiliki label kubernetes.io/arch=arm64. Anda dapat menggunakan pengaturan nodeSelector atau nodeAffinity untuk menjadwalkan beban kerja ke node tersebut.
nodeSelector
Tambahkan batasan berikut ke pod. Dengan cara ini, nodeSelector menjadwalkan pod ke node berbasis ARM. nodeSelector hanya menjadwalkan pod beban kerja ke node yang memiliki label arm64. Semua node berbasis ARM di klaster memiliki label ini.
nodeSelector:
kubernetes.io/arch: arm64 # Tentukan label yang digunakan untuk memilih node berbasis ARM.Anda dapat menggunakan file YAML berikut untuk menerapkan aplikasi tanpa status di node berbasis ARM:
nodeAffinity
Anda dapat menambahkan batasan berikut ke pod untuk menjadwalkan pod ke node berbasis ARM berdasarkan afinitas node: Setelah Anda menambahkan batasan, pod hanya dapat dijadwalkan ke node yang memiliki label kubernetes.io/arm=arm64.
Saat spesifikasi pod berisi batasan, penjadwal akan mentoleransi tanda kubernetes.io/arch=arm64:NoSchedule.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Anda dapat menggunakan file YAML berikut untuk menerapkan aplikasi tanpa status di node berbasis ARM:
Jadwalkan beban kerja multi-arsitektur ke node berbasis ARM
Secara default, ACK menjadwalkan semua beban kerja ke node berbasis x86. Jika node x86 tidak mencukupi, pod akan tertunda. Jika gambar aplikasi Anda adalah gambar multi-arsitektur, seperti gambar yang mendukung arsitektur x86 dan ARM, Anda harus mengonfigurasi penjadwalan node lintas arsitektur.
Sebagai contoh, Anda dapat mengonfigurasi afinitas node untuk lebih memprioritaskan menjadwalkan beban kerja ke node berbasis ARM atau x86. Kemudian, jadwalkan beban kerja ke jenis node lainnya ketika node berbasis ARM atau x86 tidak mencukupi.
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64Lebih memilih menjadwalkan beban kerja ke node berbasis ARM
Beban kerja berikut lebih disukai dijadwalkan ke node berbasis ARM.
Lebih memilih menjadwalkan beban kerja ke node berbasis x86
Beban kerja berikut lebih disukai dijadwalkan ke node berbasis x86.
FAQ
Apakah saya bisa menggunakan instance preemptible berbasis ARM?
Ya, Anda bisa menggunakan instance preemptible berbasis ARM. Untuk informasi lebih lanjut, lihat Gunakan Instance Preemptible.
Apa batasan penggunaan node berbasis ARM di klaster ACK?
Hanya komponen berikut yang mendukung arsitektur ARM:
Komponen Utama
Komponen Logging dan Pemantauan
Komponen Volume
Komponen Jaringan
Komponen yang ditampilkan di halaman Marketplace konsol ACK tidak mendukung arsitektur ARM.
Referensi
Anda dapat membuat node virtual berbasis ARM dan memprioritaskan menjadwalkan beban kerja ke node virtual berbasis ARM. Untuk informasi lebih lanjut, lihat Jadwalkan Beban Kerja ke Node Virtual Berbasis ARM.
Anda dapat menggunakan Container Registry Enterprise Edition untuk membangun gambar kontainer multi-arsitektur. Untuk informasi lebih lanjut, lihat Bangun Gambar Kontainer Multi-Arsitektur.
Jika Anda ingin menjalankan pekerjaan big data tanpa melakukan O&M pada sumber daya klaster, lihat Jalankan Pekerjaan Spark di Node Virtual Berbasis ARM.