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 melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Untuk 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 perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Persyaratan
- Untuk menggunakan
autopilot-armComputeClass, pastikan cluster Anda menjalankan GKE versi 1.35.3-gke.1389000 atau yang lebih baru. - Untuk menggunakan fitur seperti penetapan nilai default cerdas (dengan hanya menentukan label
kubernetes.io/arch: arm64),autopilot-arm-spotComputeClass, atauautopilot-armComputeClass di cluster Standard GKE yang menggunakan ComputeClass Autopilot, cluster Anda harus menjalankan versi 1.36.0-gke.3302001 atau yang lebih baru. - Pastikan Anda memiliki kuota untuk jenis mesin Compute Engine C4A, N4A, 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 pemilih berikut (bergantung pada jenis dan versi GKE Anda) menggunakan aturan nodeSelector atau afinitas node:
Di cluster Autopilot (default cerdas): Tentukan hanya jenis arsitektur:
kubernetes.io/arch: arm64
Jika workload Anda berjalan di cluster Autopilot, opsi ini akan memilih platform Arm tujuan umum.
Di cluster Autopilot atau cluster Standard yang menggunakan ComputeClass Autopilot (khusus ComputeClass): Tentukan ComputeClass:
cloud.google.com/compute-class: autopilot-arm(atauautopilot-arm-spot)
Memilih class ini akan menjadwalkan workload Anda di platform Arm yang dioptimalkan untuk container (atau varian Spot VM-nya) dan secara otomatis menambahkan pemilih
kubernetes.io/arch: arm64yang diperlukan ke Pod selama penerimaan.Pemilihan eksplisit (versi GKE yang lebih lama): Di cluster Autopilot yang menjalankan versi 1.35.3-gke.1389000 atau yang lebih baru, tetapi lebih lama dari 1.36.0-gke.3302001, tentukan kedua pemilih berikut untuk memilih platform Arm serbaguna. Kombinasi ini juga didukung di versi GKE yang lebih baru untuk kompatibilitas mundur:
cloud.google.com/compute-class: autopilot-armkubernetes.io/arch: arm64
Untuk workload dengan persyaratan hardware tertentu: Tentukan salah satu berikut:
kubernetes.io/arch: arm64di cluster Standard. Secara default, GKE menempatkan Pod pada jenis mesinC4A.cloud.google.com/machine-family: ARM_MACHINE_SERIES. GantiARM_MACHINE_SERIESdengan seri mesin Arm sepertiC4A,N4A, atauT2A. GKE menempatkan Pod pada seri yang ditentukan.
Secara default, menggunakan label apa pun kecuali Performance 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 bersama dengan
label arsitektur atau family mesin. 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.
nodeSelector
Contoh manifes berikut meminta node Arm yang dioptimalkan untuk container Autopilot menggunakan penetapan nilai default cerdas:
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:
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
Atau, Anda dapat meminta platform Arm yang dioptimalkan untuk container
dengan menentukan ComputeClass autopilot-arm (atau autopilot-arm-spot
untuk VM Spot) secara eksplisit:
...
spec:
nodeSelector:
cloud.google.com/compute-class: autopilot-arm
...
Untuk meminta hardware tertentu, bukan node yang dioptimalkan untuk container Autopilot, ganti ComputeClasses atau tambahkan cloud.google.com/machine-family: C4A ke pemilih Anda.
nodeAffinity
Anda dapat menggunakan afinitas node untuk meminta node Arm.
Contoh manifes berikut meminta node Arm yang dioptimalkan untuk container Autopilot menggunakan penetapan nilai default cerdas:
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: kubernetes.io/arch
operator: In
values:
- arm64
Untuk meminta hardware tertentu, bukan node yang dioptimalkan untuk container Autopilot, ganti kubernetes.io/arch dengan aturan afinitas kelompok mesin tertentu atau class permintaan seperti Performance atau Scale-Out.
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 region berikut: us-east1, us-west1, europe-west1, europe-west2, europe-west4, asia-southeast1, dan us-central1.
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.