Menjalankan workload Arm di GKE pada AWS

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

Batasan

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

  • Kumpulan node Arm di GKE di AWS tidak mendukung Cloud Service Mesh, Config Sync, atau Pengontrol Kebijakan. Anda harus menjalankan produk-produk ini pada kumpulan node x86.

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

Halaman ini menjelaskan cara membuat kumpulan node Arm, alasan gambar 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 sudah ada untuk membuat node pool. Cluster ini harus menjalankan Kubernetes versi 1.24 atau yang lebih baru.
  • Profil instance IAM untuk VM kumpulan node.
  • Subnet tempat VM kumpulan node akan berjalan.
  • Jika cluster Anda menjalankan Kubernetes versi 1.24, kumpulan node x86 untuk menjalankan Agen Connect.

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

Membuat kumpulan node Arm

GKE di AWS mendukung kumpulan node yang dibangun di image node minimal ARM64 canonical Ubuntu dan runtime containerd.

Untuk membuat kumpulan node Arm dan menambahkannya ke cluster yang sudah 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 kumpulan node
  • CLUSTER_NAME: nama cluster untuk memasang kumpulan node
  • 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 harus menentukan ukuran instance yang diinginkan. Misalnya, m6g.medium. Untuk mengetahui daftar lengkap, baca Jenis instance AWS yang didukung.

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

  • NODEPOOL_PROFILE: profil instance IAM untuk VM kumpulan node

  • NODE_VERSION: versi Kubernetes yang akan diinstal pada setiap node di kumpulan node, yang harus berupa versi 1.24 atau yang lebih baru. Misalnya, 1.24.3-gke.200.

  • MIN_NODES: jumlah minimum node yang dapat menampung kumpulan node

  • MAX_NODES: jumlah maksimum node yang dapat dimuat oleh kumpulan node

  • MAX_PODS_PER_NODE: jumlah maksimum Pod yang dapat dibuat pada satu node dalam kumpulan

  • GOOGLE_CLOUD_LOCATION: nama layanan Google Cloud

    lokasi tempat kumpulan node ini akan dikelola

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

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

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

Memahami gambar multi-arsitektur

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

Gambar multi-lengkungan adalah gambar yang dapat mendukung beberapa arsitektur. File ini terlihat seperti satu gambar dengan satu tag, tetapi berisi kumpulan gambar untuk dijalankan di arsitektur mesin yang berbeda. Image multi-arch kompatibel dengan Spesifikasi Docker Image Manifest V2 Scheme 2 atau OCI Image Index.

Saat Anda men-deploy image multi-lengkungan ke cluster, runtime container akan otomatis memilih image yang kompatibel dengan arsitektur node yang menjadi tujuan deployment. Setelah memiliki image multi-arch untuk suatu workload, Anda dapat men-deploy workload ini di beberapa arsitektur. Menjadwalkan image arsitektur tunggal ke node yang tidak kompatibel akan menyebabkan error pada 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 selanjutnya