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.

Cara meminta node Arm di Autopilot

Untuk meminta node Arm bagi Pod, Anda harus meminta node dengan arsitektur Arm dan meminta class komputasi yang mendukung node Arm. Bagian berikut akan menunjukkan cara meminta class komputasi dan arsitektur Arm menggunakan pemilih node atau aturan afinitas node dalam spesifikasi Pod Anda.

Untuk mengetahui daftar class komputasi yang mendukung arsitektur Arm, lihat Class komputasi di Autopilot.

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 initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.
  • Pastikan Anda memiliki cluster Autopilot GKE yang menjalankan GKE versi 1.24.1-gke.1400 atau yang lebih baru. Untuk menetapkan versi, gunakan flag --cluster-version dalam perintah buat atau upgrade Anda.
  • Pastikan Anda memiliki kuota untuk jenis mesin Compute Engine T2A.
  • Pastikan Anda memiliki Pod dengan image container yang kompatibel arsitektur Arm.

Meminta class komputasi dan arsitektur Arm

Untuk memberi tahu Autopilot agar menempatkan Pod Anda di class komputasi yang mendukung arsitektur Arm, tentukan kedua label berikut dalam aturan nodeSelector atau afinitas node:

cloud.google.com/compute-class: COMPUTE_CLASS
kubernetes.io/arch: arm64

Ganti COMPUTE_CLASS dengan nama class komputasi yang mendukung arsitektur Arm, seperti Scale-Out.

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.

Anda juga dapat meminta arsitektur Arm untuk Pod Spot.

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

nodeAffinity

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 Scale-Out 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:
                - Scale-Out
              - 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 region Google Cloud berikut:

  • us-central1
  • europe-west4
  • asia-southeast1

Pemecahan masalah

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

Langkah selanjutnya