Halaman ini menjelaskan cara menyiapkan workload yang akan dijadwalkan di node Arm di cluster GKE Standard. Untuk mempelajari lebih lanjut cara menjadwalkan workload Arm menggunakan Autopilot, lihat Men-deploy workload Autopilot pada arsitektur Arm.
Agar berhasil menjadwalkan workload ke node Arm, Anda harus memiliki item berikut:
- Image container yang kompatibel dengan Arm. Untuk mendapatkan panduan cara memeriksanya, lihat Apakah workload saya siap untuk Arm?
- Aktifkan node yang dapat menjadwalkan workload yang kompatibel dengan Arm. Untuk membuat resource yang diperlukan, lihat Membuat cluster dan node pool dengan node Arm.
- Cluster di region atau zona Google Cloud yang memiliki mesin virtual (VM) Arm yang tersedia. Untuk tabel platform dan jenis mesin yang dapat difilter, lihat Region dan zona yang tersedia.
Ringkasan
Secara default, GKE menjadwalkan workload hanya ke node berbasis
x86—seri mesin Compute Engine dengan prosesor Intel
atau AMD—dengan menempatkan
taint (kubernetes.io/arch=arm64:NoSchedule
)
di semua node Arm. Taint ini mencegah workload yang kompatibel dengan x86
dijadwalkan tanpa sengaja ke node Arm Anda. Jika Anda ingin men-deploy workload ke
node Arm, gunakan kolom yang dijelaskan di halaman ini untuk memandu penjadwal
agar mengirimkan workload ke jenis node yang diinginkan.
Gunakan salah satu kolom berikut:
- Pemilih node.
- Aturan afinitas node.
Saat Anda menggunakan pemilih node atau aturan afinitas node, GKE hanya akan menjadwalkan workload yang kompatibel dengan Arm jika Anda telah mendeklarasikan bahwa image container workload dapat berjalan pada arsitektur node.
Jika Anda menjadwalkan workload yang kompatibel dengan Arm menggunakan pemilih node atau menggunakan aturan afinitas node seperti yang dijelaskan di bagian berikut, GKE akan menambahkan toleransi ke konfigurasi workload sehingga Pod dapat berjalan di node Arm.
Toleransi yang ditambahkan ke workload ini cocok dengan taint (kubernetes.io/arch=arm64:NoSchedule
)
yang ditambahkan ke semua node Arm agar workload Anda dapat dijadwalkan di node Arm.
Dalam beberapa situasi, misalnya saat Anda memiliki image multi-arsitektur yang dapat berjalan di node mana pun, Anda mungkin perlu menambahkan toleransi ini secara manual ke konfigurasi workload. Untuk mendapatkan petunjuk, lihat Menggunakan toleransi untuk menjadwalkan workload multi-arch ke arsitektur apa pun.
Menggunakan pemilih node untuk menjadwalkan workload Arm
Tambahkan pemilih node berikut ke spesifikasi:
nodeSelector:
kubernetes.io/arch: arm64
Pemilih node menentukan bahwa workload ini hanya boleh dijadwalkan ke node dengan label arm64
, yang dimiliki semua node Arm di
cluster GKE.
Jika pemilih node ini disertakan dalam konfigurasi workload, GKE akan menambahkan toleransi untuk mencocokkan taint agar workload dapat dijadwalkan di node Arm.
Menggunakan aturan afinitas node untuk menjadwalkan workload Arm
Anda juga dapat menggunakan afinitas node untuk menjadwalkan workload.
Menjadwalkan workload ke satu arsitektur
Tambahkan afinitas node berikut ke spesifikasi:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
Aturan afinitas node menentukan bahwa workload hanya boleh dijadwalkan ke
node dengan label arm64
, yang dimiliki oleh semua node Arm di
cluster GKE.
Jika aturan afinitas node ini disertakan dalam konfigurasi workload, GKE akan menambahkan toleransi untuk mencocokkan taint agar workload dapat dijadwalkan di node Arm.
Menjadwalkan workload ke arsitektur x86 dan Arm
Jika ingin menjadwalkan workload di seluruh arsitektur x86 (prosesor Intel dan AMD) dan Arm, Anda dapat menentukannya dengan beberapa cara.
Menggunakan toleransi untuk menjadwalkan workload multi-arch ke arsitektur apa pun
Jika memiliki image multi-arch yang ingin dijadwalkan ke jenis arsitektur yang tersedia dalam cluster Standar, Anda hanya perlu menambahkan tolerasi ke spesifikasi workload. Anda tidak memerlukan pemilih node atau aturan afinitas node yang dijelaskan di halaman ini karena workload dapat dijadwalkan ke semua jenis arsitektur.
Tambahkan toleransi:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
Dengan toleransi ini, GKE dapat menjadwalkan workload ke node yang memiliki berbagai jenis arsitektur.
Misalnya, jika Anda memiliki cluster dengan node pool berikut:
- my-c4a-node-pool, menggunakan VM c4a-standard-16 (
arm64
). - my-c2-node-pool, menggunakan VM c2-standard-8 (
amd64
). - my-t2d-node-pool, menggunakan VM t2-standard-48 (
amd64
).
Jika Anda men-deploy workload yang menggunakan image multi-arch dan toleransi
arm64
dalam konfigurasi workload ke cluster ini, GKE dapat
menjadwalkan workload tersebut di semua node pool.
Menggunakan aturan afinitas node untuk menjadwalkan workload multi-arsitektur ke arsitektur apa pun
Jika ingin workload dijadwalkan pada node di seluruh jenis arsitektur termasuk x86 dan Arm, Anda juga dapat menggunakan aturan afinitas node. Dengan aturan afinitas node, Anda dapat menentukan dengan tepat jenis arsitektur yang ingin Anda jadwalkan workload-nya. Pendekatan ini direkomendasikan untuk menjadwalkan workload di cluster Autopilot. Untuk mempelajari lebih lanjut, lihat Men-deploy workload Autopilot di arsitektur Arm.
Dengan workload berbasis x86, Anda tidak memerlukan pemilih node, aturan afinitas node, atau toleransi workload yang akan dijadwalkan. Jika memiliki image yang hanya ingin Anda jadwalkan ke node berbasis x86, Anda tidak perlu menggunakan kolom ini.
Untuk menjadwalkan workload ke jenis arsitektur apa pun, cantumkan arm64
dan amd64
bagian values
dari kolom afinitas node. amd64
menyertakan semua node
yang menggunakan prosesor x86.
Contoh berikut menetapkan bahwa workload ini dapat dijadwalkan pada node yang menggunakan prosesor Arm atau prosesor x86:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
- amd64
Label untuk setiap jenis arsitektur adalah:
arm64
untuk node yang menggunakan prosesor Arm (misalnya, C4A).amd64
untuk node yang menggunakan prosesor AMD (misalnya, Tau T2D) atau node yang menggunakan prosesor Intel (misalnya, C2).
Misalnya, jika Anda memiliki cluster dengan node pool berikut dan aturan afinitas node yang ditentukan:
- my-c4a-node-pool, menggunakan VM c4a-standard-16 (
arm64
). - my-c2-node-pool, menggunakan VM c2-standard-8 (
amd64
). - my-t2d-node-pool, menggunakan VM t2-standard-48 (
amd64
).
Jika Anda men-deploy workload yang menggunakan image multi-arch dan afinitas
node dengan arm64
yang disertakan dalam daftar values
ke cluster ini, GKE akan
menambahkan toleransi dalam konfigurasi workload dan juga dapat
menjadwalkan workload di semua node pool.
Men-deploy workload
Kini setelah selesai menentukan lokasi penjadwalan workload yang kompatibel dengan Arm, Anda dapat men-deploy workload.
Saat Anda men-deploy workload ke cluster GKE, petunjuk yang berlaku sama untuk seluruh jenis arsitektur. Anda dapat men-deploy workload yang kompatibel dengan Arm seperti men-deploy workload lain, selama Anda telah menyelesaikan langkah-langkah prasyarat. Untuk melihat contoh deployment workload, lihat halaman berikut:
Pemecahan masalah
Untuk mengetahui error umum dan informasi pemecahan masalah, lihat Memecahkan masalah workload Arm.