Halaman ini menunjukkan cara mengonfigurasi deployment Autopilot Google Kubernetes Engine (GKE) untuk meminta node yang didukung arsitektur Arm.
Tentang arsitektur Arm di Autopilot
Cluster Autopilot memberikan
class komputasi
untuk workload yang memiliki persyaratan hardware tertentu. Beberapa class komputasi ini
mendukung beberapa arsitektur CPU, seperti amd64
dan arm64
.
Kasus penggunaan node Arm
Node dengan arsitektur Arm memberikan performa yang lebih hemat biaya dibandingkan node x86 yang serupa. Anda harus memilih Arm untuk workload Autopilot dalam situasi seperti berikut:
- Lingkungan Anda mengandalkan arsitektur Arm untuk melakukan pembuatan dan pengujian.
- Anda sedang mengembangkan aplikasi untuk perangkat Android yang berjalan di CPU Arm.
- Anda menggunakan image multi arsitektur dan ingin mengoptimalkan biaya saat menjalankan beban kerja.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- Tinjau persyaratan dan batasan untuk node Arm.
- Pastikan Anda memiliki kuota untuk jenis mesin Compute Engine C4A atau Tau T2A.
- Pastikan Anda memiliki Pod dengan image container yang kompatibel arsitektur Arm.
Cara meminta node Arm di Autopilot
Untuk memberi tahu Autopilot agar menjalankan Pod Anda di node Arm, tentukan salah satu label berikut dalam aturan nodeSelector atau node affinity:
kubernetes.io/arch: arm64
. GKE menempatkan Pod pada jenis mesinT2A
secara default. Jika mesinT2A
tidak tersedia, GKE akan menempatkan Pod pada jenis mesinC4A
.cloud.google.com/machine-family: ARM_MACHINE_SERIES
: GantiARM_MACHINE_SERIES
dengan seri mesin Arm sepertiC4A
atauT2A
. GKE menempatkan Pod pada seri yang ditentukan.
Secara default, penggunaan salah satu label memungkinkan GKE menempatkan Pod lain
di node yang sama jika ada kapasitas ketersediaan di node tersebut. Untuk meminta
node khusus untuk setiap Pod, tambahkan label cloud.google.com/compute-class:
Performance
ke manifes Anda. Untuk mengetahui detailnya, lihat Mengoptimalkan
performa Pod Autopilot dengan memilih seri
mesin.
Atau, Anda dapat menggunakan label Scale-Out
dengan label arm64
untuk meminta T2A
.
Anda juga dapat meminta arsitektur Arm untuk Pod Spot.
Saat men-deploy workload Anda, Autopilot akan melakukan hal berikut:
- Menyediakan secara otomatis node Arm untuk menjalankan Pod Anda.
- Melakukan taint secara otomatis pada node baru agar Pod non-Arm tidak dijadwalkan pada node tersebut.
- Menambahkan toleransi secara otomatis ke Pod Arm Anda untuk memungkinkan penjadwalan node baru.
Contoh permintaan arsitektur Arm
Contoh spesifikasi berikut menunjukkan cara menggunakan aturan pemilih node atau afinitas node untuk meminta arsitektur Arm di Autopilot.
Pemilih node
Contoh manifes berikut menunjukkan cara meminta node Arm di Pemilih node:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-arm
spec:
replicas: 3
selector:
matchLabels:
app: nginx-arm
template:
metadata:
labels:
app: nginx-arm
spec:
nodeSelector:
cloud.google.com/compute-class: Performance
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
Afinitas node
Anda dapat menggunakan afinitas node untuk meminta node Arm. Anda juga dapat menentukan jenis afinitas node yang akan digunakan:
requiredDuringSchedulingIgnoredDuringExecution
: Harus menggunakan class komputasi dan arsitektur yang ditentukan.preferredDuringSchedulingIgnoredDuringExecution
: Menggunakan class komputasi dan arsitektur yang ditentukan berdasarkan upaya terbaik. Misalnya, jika node x86 yang sudah ada dapat dialokasikan, GKE akan menempatkan Pod Anda pada node x86, bukan menyediakan node Arm baru. Jika Anda menggunakan selain manifes image multi-arsitektur, Pod akan error. Sebaiknya Anda secara eksplisit meminta arsitektur spesifik yang Anda inginkan.
Manifes contoh berikut memerlukan class Performance
dan node
Arm:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-arm
spec:
replicas: 3
selector:
matchLabels:
app: nginx-arm
template:
metadata:
labels:
app: nginx-arm
spec:
terminationGracePeriodSeconds: 25
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
ephemeral-storage: 1Gi
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/compute-class
operator: In
values:
- Performance
- key: kubernetes.io/arch
operator: In
values:
- arm64
Rekomendasi
- Bangun dan gunakan image multi-arsitektur sebagai bagian dari pipeline Anda. Image multi-arsitektur memastikan Pod Anda dapat berjalan, meskipun ditempatkan di node x86.
- Minta class komputasi dan arsitektur secara eksplisit dalam manifes workload Anda. Jika tidak melakukannya, Autopilot akan menggunakan arsitektur default untuk class komputasi yang dipilih, yang mungkin bukan Arm.
Ketersediaan
Anda dapat men-deploy workload Autopilot pada arsitektur Arm di lokasi Google Cloud yang mendukung arsitektur Arm. Untuk mengetahui detailnya, lihat Region dan zona yang tersedia.
Pemecahan masalah
Untuk mengetahui error umum dan informasi pemecahan masalah, lihat Memecahkan masalah workload Arm.
Langkah berikutnya
- Pelajari arsitektur cluster Autopilot lebih lanjut.
- Pelajari siklus proses Pod.
- Pelajari class komputasi Autopilot yang tersedia.
- Baca permintaan resource default, minimum, dan maksimum untuk setiap platform.