Menyiapkan workload Arm untuk deployment


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:

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:

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-t2a-node-pool, menggunakan VM t2a-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:

Misalnya, jika Anda memiliki cluster dengan node pool berikut dan aturan afinitas node yang ditentukan:

  • my-t2a-node-pool, menggunakan VM t2a-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.

Langkah selanjutnya