Menjalankan workload Arm di GKE pada AWS

GKE di AWS memungkinkan Anda menjalankan workload Arm yang dibuat untuk prosesor AWS Graviton berbasis Arm.

Batasan

  • Node pool Arm yang menjalankan versi Kubernetes yang lebih lama dari 1.24.8-gke.1300 otomatis menambahkan taint selama pembuatan node pool untuk mencegah workload Arm dijadwalkan pada node non-Arm. Node pool Arm di cluster pada versi 1.24.8-gke.1300 atau yang lebih tinggi tidak lagi menambahkan taint ini. Jika Anda mengupgrade dari cluster yang lebih lama dari 1.24.8-gke.1300, Anda harus membuat taint ini sendiri atau mempertimbangkannya saat mengupgrade.

  • Kumpulan node Arm di GKE di AWS tidak mendukung Cloud Service Mesh, Config Sync, atau Policy Controller. Anda harus menjalankan produk ini di node pool x86.

  • Cluster yang menjalankan Kubernetes versi 1.24 memerlukan node pool x86 untuk menjalankan Connect Agent. Jika cluster Anda menjalankan Kubernetes versi 1.25 atau yang lebih baru, Anda tidak memerlukan node pool x86.

Halaman ini menjelaskan cara membuat node pool Arm, alasan image multi-arsitektur adalah cara yang direkomendasikan untuk men-deploy workload Arm, dan cara menjadwalkan workload Arm.

Sebelum memulai

Sebelum membuat kumpulan node untuk workload Arm, Anda memerlukan resource berikut:

  • Cluster AWS yang ada untuk membuat node pool. Cluster ini harus menjalankan Kubernetes versi 1.24 atau yang lebih baru.
  • Profil instance IAM untuk VM node pool.
  • Subnet tempat VM node pool akan berjalan.
  • Jika cluster Anda menjalankan Kubernetes versi 1.24, node pool x86 untuk menjalankan Connect Agent.

    Untuk mengetahui detail cara membuat node pool di GKE di AWS, lihat Membuat node pool.

Membuat node pool Arm

GKE di AWS mendukung node pool yang dibangun di image node minimal arm64 Ubuntu Canonical dan runtime containerd.

Untuk membuat node pool Arm dan menambahkannya ke cluster yang ada, jalankan perintah berikut:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN

Ganti kode berikut:

  • NODE_POOL_NAME: nama yang Anda pilih untuk node pool
  • CLUSTER_NAME: nama cluster tempat node pool akan dilampirkan
  • INSTANCE_TYPE: salah satu jenis instance berikut:

    • m6g
    • m6gd
    • t4g
    • r6g
    • r6gd
    • c6g
    • c6gd
    • c6gn
    • x2gd
    • c7g
    • im4gn
    • g5g

      Jenis instance ini didukung oleh prosesor AWS Graviton berbasis Arm. Anda juga perlu menentukan ukuran instance yang Anda inginkan. Misalnya, m6g.medium. Untuk mengetahui daftar lengkapnya, lihat Jenis instance AWS yang didukung.

  • ROOT_VOLUME_SIZE: ukuran yang diinginkan untuk volume root setiap node, dalam Gb

  • NODEPOOL_PROFILE: profil instance IAM untuk VM node pool

  • NODE_VERSION: versi Kubernetes yang akan diinstal di setiap node dalam node pool, yang harus berupa versi 1.24 atau yang lebih baru. Contoh, 1.24.3-gke.200.

  • MIN_NODES: jumlah minimum node yang dapat dimuat oleh node pool

  • MAX_NODES: jumlah maksimum node yang dapat dimuat node pool

  • MAX_PODS_PER_NODE: jumlah maksimum Pod yang dapat dibuat di satu node dalam pool

  • GOOGLE_CLOUD_LOCATION: nama Google Cloud

    lokasi tempat kumpulan node ini akan dikelola

  • NODEPOOL_SUBNET: ID subnet tempat node pool akan berjalan. Jika subnet ini berada di luar blok CIDR utama VPC, Anda harus melakukan langkah-langkah tambahan. Untuk mengetahui informasi selengkapnya, lihat grup keamanan.

  • SSH_KEY_PAIR_NAME: nama pasangan kunci SSH AWS yang dibuat untuk akses SSH (opsional)

  • CONFIG_KMS_KEY_ARN: Amazon Resource Name (ARN) dari kunci AWS KMS yang mengenkripsi data pengguna

Memahami image multi-arsitektur

Image container harus kompatibel dengan arsitektur node tempat Anda ingin menjalankan workload Arm. Untuk memastikan bahwa image container Anda kompatibel dengan Arm, sebaiknya gunakan image multi-arsitektur ("multi-arch").

Image multi-arch adalah image yang dapat mendukung beberapa arsitektur. Tampilannya seperti satu gambar dengan satu tag, tetapi berisi sekumpulan gambar untuk dijalankan pada arsitektur mesin yang berbeda. Image multi-arch kompatibel dengan Spesifikasi Indeks Image OCI atau Docker Image Manifest V2 Scheme 2.

Saat Anda men-deploy image multi-arch ke cluster, runtime container secara otomatis memilih image yang kompatibel dengan arsitektur node tempat Anda melakukan deployment. Setelah memiliki image multi-arch untuk workload, Anda dapat men-deploy workload ini di beberapa arsitektur. Menjadwalkan image arsitektur tunggal ke node yang tidak kompatibel akan menyebabkan error saat waktu pemuatan.

Untuk mempelajari lebih lanjut cara menggunakan image multi-arch dengan workload Arm, lihat Membangun image multi-arsitektur untuk workload Arm dalam dokumentasi Google Kubernetes Engine (GKE).

Langkah berikutnya