Men-deploy workload Autopilot pada arsitektur Arm

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
  • 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 perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
  • Tinjau persyaratan dan batasan untuk node Arm.
  • Untuk menggunakan ComputeClass autopilot-arm, pastikan cluster Anda menjalankan GKE versi 1.35.3-gke.1389000 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, gunakan salah satu metode berikut, bergantung pada persyaratan Anda. Anda menentukannya menggunakan aturan nodeSelector atau afinitas node:

  • Untuk workload tujuan umum: Minta platform Arm yang dioptimalkan container dengan menentukan keduanya berikut:
    • cloud.google.com/compute-class: autopilot-arm
    • kubernetes.io/arch: arm64
  • Untuk workload dengan persyaratan hardware tertentu: Tentukan salah satu hal berikut:

    • kubernetes.io/arch: arm64. GKE menempatkan Pod pada jenis mesin C4A secara default untuk cluster yang menjalankan versi 1.31.3-gke.1056000 dan yang lebih baru. Jika cluster menjalankan versi yang lebih lama, GKE akan menempatkan Pod pada jenis mesin T2A.

    • cloud.google.com/machine-family: ARM_MACHINE_SERIES. Ganti ARM_MACHINE_SERIES dengan seri mesin Arm seperti C4A, N4A, atau T2A. GKE menempatkan Pod pada seri yang ditentukan.

Secara default, menggunakan salah satu label 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 machine-family. 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:

  1. Menyediakan secara otomatis node Arm untuk menjalankan Pod Anda.
  2. Melakukan taint secara otomatis pada node baru agar Pod non-Arm tidak dijadwalkan pada node tersebut.
  3. 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 container Autopilot:

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: autopilot-arm
        kubernetes.io/arch: arm64
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

Untuk meminta hardware tertentu, bukan node yang dioptimalkan container Autopilot, ganti autopilot-arm dengan Performance atau Scale-Out di nodeSelector.

nodeAffinity

Anda dapat menggunakan afinitas node untuk meminta node Arm.

Contoh manifes berikut meminta node Arm yang dioptimalkan container Autopilot:

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:
                - autopilot-arm
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

Untuk meminta hardware tertentu, bukan node yang dioptimalkan container Autopilot, ganti autopilot-arm dengan Performance atau Scale-Out dalam aturan nodeAffinity.

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-west4, dan us-central1.

Pemecahan masalah

Untuk mengetahui error umum dan informasi pemecahan masalah, lihat Memecahkan masalah workload Arm.

Langkah berikutnya