Menggunakan penyediaan otomatis node


Halaman ini menjelaskan cara menggunakan penyediaan otomatis node di cluster Google Kubernetes Engine (GKE) Standard. Anda seharusnya sudah memahami konsep penyediaan otomatis node.

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.

Persyaratan

Penyediaan otomatis node tersedia dalam rilis GKE berikut:

  • Versi 1.11.2-gke.25 dan yang lebih baru untuk cluster zona.
  • Versi 1.12.x dan yang lebih baru untuk cluster regional.
  • Versi 1.27.6 dan yang lebih baru atau 1.28 dan yang lebih baru, untuk Cloud TPU v4 dan v5e.
  • Versi 1.28.7-gke.1020000 atau yang lebih baru dan 1.29.2-gke.1035000 atau yang lebih baru untuk Cloud TPU v5p.

Aktifkan penyediaan otomatis node

Anda dapat mengaktifkan penyediaan otomatis node di cluster dengan gcloud CLI atau Konsol Google Cloud.

Penyediaan otomatis node memiliki batasan resource berikut:

Anda harus merencanakan rentang alamat IP node dengan cermat. Anda dapat memperluas rentang alamat IP node setelah membuat cluster. Namun, sebaiknya jangan perluas rentang alamat IP node setelah Anda membuat cluster karena Anda harus mengupdate aturan firewall untuk menyertakan rentang baru sebagai sumber. Anda dapat memperluas rentang alamat IP Pod menggunakan CIDR multi-Pod terpisah dengan penyediaan otomatis node.

gcloud

Untuk mengaktifkan penyediaan otomatis node, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --min-cpu MINIMUM_CPU \
    --min-memory MIMIMUM_MEMORY \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster untuk mengaktifkan penyediaan otomatis node.
  • MINIMUM_CPU: jumlah minimum core dalam cluster.
  • MINIMUM_MEMORY: jumlah minimum gigabyte pada memori dalam cluster.
  • MAXIMUM_CPU: jumlah maksimum core dalam cluster.
  • MAXIMUM_MEMORY: jumlah maksimum gigabyte pada memori dalam cluster.

Contoh berikut memungkinkan penyediaan otomatis node di dev-cluster dan memungkinkan penskalaan antara total ukuran cluster 1 CPU dan 1 gigabyte pada memori hingga maksimum 10 CPU dan memori 64 gigabyte:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --min-cpu 1 \
    --min-memory 1 \
    --max-cpu 10 \
    --max-memory 64

Konsol

Untuk mengaktifkan penyediaan otomatis node, lakukan langkah-langkah berikut:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka halaman Google Kubernetes Engine

  2. Klik nama cluster.

  3. Di bagian Automation, untuk Node auto-provisioning, klik Edit.

  4. Centang kotak Enable node auto-provisioning.

  5. Tetapkan penggunaan CPU serta memori minimum dan maksimum yang Anda inginkan untuk cluster.

  6. Klik Save changes.

Menggunakan file konfigurasi penyediaan otomatis

Penyediaan otomatis node dapat dikonfigurasi menggunakan file konfigurasi YAML. File konfigurasi hanya dapat berisi satu baris jika digunakan untuk mengubah setelan tunggal. Beberapa setelan dapat ditentukan dalam file konfigurasi tunggal. Dalam hal ini, semua setelan tersebut akan diubah saat file konfigurasi diterapkan.

Beberapa konfigurasi lanjutan hanya dapat ditentukan dengan menggunakan file konfigurasi.

Contoh 1: Menerapkan file konfigurasi berikut memungkinkan perbaikan otomatis dan upgrade otomatis node untuk setiap node pool baru yang dibuat oleh penyediaan otomatis node:

management:
  autoRepair: true
  autoUpgrade: true

Contoh 2: Menerapkan file konfigurasi berikut akan mengubah setelan berikut:

  • Menetapkan batas resource untuk CPU, memori, dan GPU. Penyediaan otomatis node tidak akan membuat node jika ukuran total cluster melebihi batas resource yang ditentukan.
  • Mengaktifkan perbaikan otomatis node dan upgrade otomatis untuk semua node pool baru yang dibuat oleh penyediaan otomatis node.
  • Mengaktifkan Pemantauan integritas dan booting aman untuk semua node pool baru yang dibuat oleh penyediaan otomatis node.
  • Menetapkan ukuran boot disk menjadi 100 GB untuk setiap node pool baru yang dibuat oleh penyediaan otomatis node.
resourceLimits:
  - resourceType: 'cpu'
    minimum: 4
    maximum: 10
  - resourceType: 'memory'
    maximum: 64
  - resourceType: 'nvidia-tesla-k80'
    maximum: 4
management:
  autoRepair: true
  autoUpgrade: true
shieldedInstanceConfig:
  enableSecureBoot: true
  enableIntegrityMonitoring: true
diskSizeGb: 100

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Buat file dengan konfigurasi yang diinginkan di lokasi tempat gcloud CLI dapat mengaksesnya.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: nama file konfigurasi.

    Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud container clusters update.

Default penyediaan otomatis

Penyediaan otomatis node melihat persyaratan Pod di cluster Anda untuk menentukan jenis node yang paling sesuai dengan Pod tersebut. Namun, beberapa setelan node pool tidak langsung ditentukan oleh Pod (misalnya setelan yang terkait dengan upgrade node). Anda dapat menetapkan nilai default untuk setelan tersebut, yang akan diterapkan ke semua node pool yang baru dibuat.

Menetapkan jenis gambar node default

Anda dapat menentukan jenis image node yang akan digunakan untuk semua node pool baru yang disediakan otomatis menggunakan gcloud CLI atau file konfigurasi. Setelan ini hanya tersedia untuk cluster GKE versi 1.20.6-gke.1800 dan yang lebih baru.

gcloud

Untuk menetapkan jenis image node default, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --autoprovisioning-image-type IMAGE_TYPE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • IMAGE_TYPE: jenis image node, yang dapat berupa salah satu kode berikut:

    • cos_containerd: Container-Optimized OS untuk Container dengan container.
    • ubuntu_containerd: Ubuntu dengan containerd.

File

Untuk semua node pool baru yang disediakan otomatis, Anda dapat menentukan jenis image node yang akan digunakan menggunakan file konfigurasi. Konfigurasi YAML berikut menentukan bahwa untuk node pool baru yang disediakan otomatis, jenis image-nya adalah cos_containerd, dan memiliki batas resource terkait untuk CPU dan memori. Anda harus menentukan nilai maksimum untuk CPU dan memori guna mengaktifkan penyediaan otomatis.

  1. Simpan konfigurasi YAML:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
    imageType: 'cos_containerd'
    
  2. Terapkan konfigurasi:

    gcloud container clusters update CLUSTER_NAME \
      --enable-autoprovisioning \
      --autoprovisioning-config-file FILE_NAME
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: nama file konfigurasi.

Menyetel default identitas untuk node pool yang disediakan otomatis

Izin untuk resource Google Cloud disediakan berdasarkan identities.

Anda dapat menentukan identitas default (baik akun layanan maupun satu atau beberapa cakupan) untuk node pool baru yang disediakan otomatis menggunakan gcloud CLI atau melalui file konfigurasi.

gcloud

Untuk menentukan akun layanan IAM default yang digunakan oleh penyediaan otomatis node, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • SERVICE_ACCOUNT: nama akun layanan default.

Contoh berikut menetapkan test-service-account@google.com sebagai akun layanan default di cluster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com

Untuk menentukan cakupan default yang digunakan oleh penyediaan otomatis node, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --autoprovisioning-scopes=SCOPE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • SCOPE: cakupan Google Cloud yang digunakan oleh node pool yang disediakan otomatis. Untuk menentukan beberapa cakupan, pisahkan cakupan dengan koma (misalnya, SCOPE1, SCOPE2,...).

Contoh berikut menetapkan cakupan default di cluster dev-cluster ke devstorage.read_only:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only

File

Anda dapat menentukan default identitas yang digunakan oleh penyediaan otomatis node dengan menggunakan file konfigurasi. Konfigurasi YAML berikut menetapkan akun layanan IAM:

  serviceAccount: SERVICE_ACCOUNT

Ganti SERVICE_ACCOUNT dengan nama akun layanan default.

Atau, Anda dapat menggunakan konfigurasi YAML berikut untuk menentukan cakupan default yang digunakan oleh penyediaan otomatis node:

  scopes: SCOPE

Ganti SCOPE dengan cakupan Google Cloud yang digunakan oleh node pool yang disediakan otomatis. Untuk menentukan beberapa cakupan, pisahkan cakupan dengan koma (misalnya, SCOPE1, SCOPE2,...).

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Buat file konfigurasi yang menentukan default identitas di lokasi tempat gcloud CLI dapat mengaksesnya.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • FILE_NAME: nama file konfigurasi.

Kunci enkripsi yang dikelola pelanggan (CMEK)

Anda dapat menentukan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) yang digunakan oleh node pool baru yang disediakan otomatis.

Anda dapat mengaktifkan enkripsi yang dikelola pelanggan untuk booting drive menggunakan file konfigurasi. Konfigurasi YAML berikut menetapkan kunci CMEK:

  bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Ganti kode berikut:

  • KEY_PROJECT_ID: project ID kunci Anda.
  • LOCATION: lokasi key ring Anda.
  • KEY_RING: nama key ring Anda.
  • KEY_NAME: nama kunci Anda.

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Buat file konfigurasi yang menentukan kunci CMEK di lokasi tempat gcloud CLI dapat mengaksesnya.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: nama file konfigurasi.

Integritas node

Penyediaan otomatis node mendukung pembuatan node pool dengan mengaktifkan Booting Aman dan Pemantauan Integritas.

Anda dapat mengaktifkan Booting Aman dan Pemantau Integritas dengan menggunakan file konfigurasi. Konfigurasi YAML berikut mengaktifkan Booting Aman dan menonaktifkan Pemantauan Integritas:

  shieldedInstanceConfig:
    enableSecureBoot: true
    enableIntegrityMonitoring: false

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk enableSecureBoot dan enableIntegrityMonitoring. Simpan file.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: nama file konfigurasi.

Perbaikan otomatis node dan upgrade otomatis

Penyediaan otomatis node mendukung pembuatan node pool dengan perbaikan otomatis node dan upgrade otomatis node diaktifkan.

gcloud

Untuk mengaktifkan perbaikan otomatis dan upgrade otomatis untuk semua node pool baru yang disediakan otomatis, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --enable-autoprovisioning-autorepair \
    --enable-autoprovisioning-autoupgrade

Ganti CLUSTER_NAME dengan nama cluster.

Untuk menonaktifkan perbaikan otomatis dan upgrade otomatis untuk semua node pool baru yang disediakan otomatis, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \
    --no-enable-autoprovisioning-autoupgrade

Ganti CLUSTER_NAME dengan nama cluster.

File

Anda dapat mengaktifkan atau menonaktifkan perbaikan otomatis dan upgrade otomatis node menggunakan file konfigurasi. Konfigurasi YAML berikut memungkinkan perbaikan otomatis dan menonaktifkan upgrade otomatis:

  management:
    autoRepair: true
    autoUpgrade: false

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk autoUpgrade dan autoRepair. Simpan file tersebut.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • FILE_NAME: nama file konfigurasi.

Menggunakan upgrade lonjakan untuk node pool baru yang disediakan otomatis

Anda dapat menentukan setelan upgrade lonjakan pada semua node pool baru yang disediakan otomatis menggunakan gcloud CLI atau file konfigurasi. Secara default, GKE menetapkan strategi upgrade node ke lonjakan upgrade.

gcloud

Untuk menentukan setelan upgrade lonjakan bagi semua node pool baru yang disediakan otomatis, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-max-surge-upgrade MAX_SURGE \
    --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • MAX_SURGE: jumlah node maksimum yang dapat ditambahkan ke node pool selama upgrade.
  • MAX_UNAVAILABLE: jumlah maksimum node dalam node pool yang tidak dapat tersedia secara bersamaan selama upgrade.

File

Anda dapat menentukan setelan upgrade lonjakan untuk semua node pool baru yang disediakan otomatis menggunakan file konfigurasi seperti berikut:

  upgradeSettings:
    maxSurgeUpgrade: 1
    maxUnavailableUpgrade: 2

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Salin konfigurasi di atas ke file di lokasi tempat gcloud dapat mengaksesnya. Edit nilai untuk maxSurgeUpgrade dan maxUnavailableUpgrade. Simpan file.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • FILE_NAME: nama file konfigurasi.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud container clusters update.

Untuk beralih kembali menggunakan upgrade lonjakan untuk node pool baru yang disediakan otomatis, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-surge-upgrade

Ganti CLUSTER_NAME dengan nama cluster.

Secara opsional, Anda dapat menyertakan flag untuk setelan tertentu seperti dalam perintah sebelumnya. GKE menggunakan kembali konfigurasi Anda sebelumnya untuk strategi upgrade, jika ditetapkan.

Menggunakan upgrade blue-green untuk node pool baru yang disediakan otomatis

Anda dapat menggunakan upgrade biru hijau untuk semua node pool baru yang disediakan otomatis dengan menggunakan gcloud CLI. Dengan upgrade blue-green, Anda dapat menggunakan setelan default, atau menyesuaikannya untuk mengoptimalkan lingkungan Anda. Untuk mempelajari upgrade blue-green lebih lanjut, lihat Upgrade blue-green.

Untuk memperbarui strategi upgrade node bagi kumpulan node yang disediakan secara otomatis dan ada, lihat Mengaktifkan atau menonaktifkan upgrade lonjakan untuk kumpulan node yang ada dan Memperbarui strategi upgrade biru-hijau kumpulan node yang ada.

Variabel berikut digunakan dalam perintah yang tercantum di bawah ini:

  • CLUSTER_NAME: nama cluster untuk node pool.
  • COMPUTE_ZONE: zona untuk cluster.
  • NODE_POOL_NAME: nama node pool.
  • NUMBER_NODES: jumlah node dalam node pool di setiap zona cluster.
  • BATCH_NODE_COUNT: jumlah node biru yang akan dikosongkan dalam batch selama fase pengosongan kumpulan biru. Default-nya adalah satu. Jika disetel ke nol, fase pengosongan pool biru akan dilewatkan.
  • BATCH_PERCENT: persentase node biru yang akan dikosongkan dalam batch selama fase pengosongan pool biru. Harus dalam rentang [0.0, 1.0].
  • BATCH_SOAK_DURATION: durasi waktu tunggu dalam satuan detik setelah setiap pengosongan batch. Defaultnya adalah nol.
  • NODE_POOL_SOAK_DURATION: durasi dalam detik untuk menunggu setelah menyelesaikan pengosongan semua batch. Defaultnya adalah 3.600 detik.

Setelan default untuk upgrade blue-green adalah:

  • BATCH_NODE_COUNT = 1
  • BATCH_SOAK_DURATION = 0 detik
  • NODE_POOL_SOAK_DURATION = 3.600 detik (1 jam)

Mengupdate cluster untuk menggunakan upgrade biru hijau untuk node pool baru yang disediakan otomatis

Perintah berikut menggunakan gcloud container clusters update untuk memperbarui strategi upgrade node untuk kumpulan node baru yang disediakan secara otomatis.

Anda juga dapat menggunakan flag ini saat:

Untuk mengupdate cluster agar menggunakan upgrade blue-green dengan setelan default untuk node pool baru yang disediakan otomatis, gunakan perintah ini:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-blue-green-upgrade

Anda dapat memperbarui cluster untuk menggunakan upgrade blue-green dengan setelan tertentu untuk node pool baru yang disediakan otomatis. Perintah ini juga dapat digunakan tanpa flag --enable-autoprovisioning-blue-green-upgrade untuk memperbarui setelan.

Perintah berikut menggunakan BATCH_NODE_COUNT untuk menetapkan ukuran batch jumlah node absolut:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning \
  --enable-autoprovisioning-blue-green-upgrade \
  --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \
  --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION

Anda juga dapat menggunakan BATCH_PERCENT untuk menetapkan ukuran batch berbasis persentase, dengan mengganti batch-node-count dalam perintah terakhir dengan batch-percent dan menggunakan desimal antara 0 dan 1 (misalnya 25% adalah 0.25). Untuk melihat cara setelan ukuran batch berbasis persentase, baca artikel Mengupdate node pool dengan upgrade biru/hijau menggunakan ukuran batch berbasis persentase.

Boot disk kustom

Penyediaan otomatis node mendukung pembuatan node pool dengan Boot disk kustom.

Anda dapat menyesuaikan setelan boot disk menggunakan file konfigurasi. GKE mereservasi sebagian boot disk node untuk fungsi kubelet. Untuk mengetahui informasi selengkapnya, lihat Penyimpanan sementara yang didukung oleh boot disk node.

Konfigurasi YAML berikut menyebabkan penyediaan otomatis node membuat node pool dengan disk SSD sebesar 100 GB:

  diskSizeGb: 100
  diskType: pd-ssd

Tentukan nilai berikut:

  • diskSizeGb: ukuran disk, ditentukan dalam GB.
  • diskType: jenis disk, yang dapat berupa salah satu nilai berikut:
    • pd-balanced (default)
    • pd-standard
    • pd-ssd. Pada GKE versi 1.22 dan versi sebelumnya, jika Anda menentukan pd-ssd, penyediaan otomatis node hanya mempertimbangkan jenis mesin N1 saat membuat node pool.

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Buat file dengan konfigurasi boot disk yang diinginkan di lokasi tempat gcloud CLI dapat mengaksesnya.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

    gcloud container clusters update CLUSTER_NAME \
       --enable-autoprovisioning \
       --autoprovisioning-config-file FILE_NAME

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: nama file konfigurasi.

Memisahkan Pod kube-system dari workload Anda

Sebagai administrator cluster, sebaiknya pisahkan pod kube-system dari workload Anda. Konfigurasi ini mencegah cluster Anda mengalami masalah penurunan skala pada node yang kurang dimanfaatkan yang memiliki pod kube-system yang berjalan.

Contoh berikut menunjukkan cara memisahkan pod kube-system dari workload cluster dengan menggunakan kombinasi penyediaan otomatis node dan toleransi taint.

  1. Buat cluster dengan node pool default VM e2-standard-2:

    gcloud container clusters create test --machine-type=e2-standard-2
    
  2. Terapkan taint pada node pool default-pool:

    kubectl taint nodes -l cloud.google.com/gke-nodepool=default-pool CriticalAddonsOnly=true:NoSchedule
    

    Outputnya mirip dengan kode berikut:

    node/gke-test-default-pool-66fd7aed-7xbd tainted
    node/gke-test-default-pool-66fd7aed-kg1x tainted
    node/gke-test-default-pool-66fd7aed-ljc7 tainted
    
  3. Aktifkan penyediaan otomatis node untuk cluster Anda:

    gcloud container clusters update test \
        --enable-autoprovisioning \
        --min-cpu 1 \
        --min-memory 1 \
        --max-cpu 10 \
        --max-memory 64 \
        --autoprovisioning-scopes= \
          https://www.googleapis.com/auth/logging.write,\
          https://www.googleapis.com/auth/monitoring, \
          https://www.googleapis.com/auth/devstorage.read_only
    

    Cluster Anda dapat menyesuaikan skala antara total ukuran cluster 1 CPU dan memori 1 gigabyte hingga maksimum 10 CPU dan memori 64 gigabyte.

  4. Uji konfigurasi ini dengan menyimpan contoh manifes berikut sebagai nginx.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      labels:
        env: test
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
      tolerations:
      - key: dedicated
        operator: Equal
        value: ui-team
        effect: NoSchedule
      nodeSelector:
        dedicated: ui-team
    

    Manifes ini men-deploy Pod workload pengujian di cluster dengan label nodeSelector dan taint node dedicated: ui-team. Tanpa penyediaan otomatis node, Pod workload ini tidak dapat dijadwalkan karena tidak ada node pool yang memiliki label dan taint yang tepat.

  5. Terapkan manifes ke cluster:

    kubectl apply -f nginx.yaml
    

    Outputnya mirip dengan kode berikut:

    pod/nginx created
    
  6. Lihat node pool baru yang sesuai dengan label ui-team:

    kubectl get node --selector=dedicated=ui-team
    

    Outputnya mirip dengan kode berikut:

    NAME                                            STATUS   ROLES    AGE   VERSION
    gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr   Ready    <none>   14s   v1.21.11-gke.900
    

Dengan penyediaan otomatis node dan toleransi taint, cluster Anda memisahkan kube-system dari Pod workload.

Menggunakan akselerator untuk node pool baru yang disediakan otomatis

Anda dapat mengaktifkan penyediaan otomatis node dan mengonfigurasi GKE untuk menyediakan akselerator GPU atau Cloud TPU secara otomatis guna memastikan kapasitas yang diperlukan untuk menjadwalkan workload AI/ML.

Mengonfigurasi batas GPU

Saat menggunakan penyediaan otomatis node dengan GPU, Anda dapat menetapkan batas maksimum untuk setiap jenis GPU dalam cluster menggunakan gcloud CLI atau Konsol Google Cloud. Jumlah batas GPU adalah jumlah maksimum GPU. Misalnya, VM dengan 16 GPU dihitung sebagai 16 bukan 1 untuk tujuan batas ini. Untuk mengonfigurasi beberapa jenis GPU, Anda harus menggunakan file konfigurasi.

Untuk mencantumkan resourceTypes yang tersedia, jalankan gcloud compute accelerator-types list.

gcloud

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --max-cpu MAXIMUM_CPU \
    --max-memory MAXIMUM_MEMORY \
    --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \
    --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • MAXIMUM_CPU: jumlah maksimum core dalam cluster.
  • MAXIMUM_MEMORY: jumlah maksimum gigabyte pada memori dalam cluster.
  • GPU_TYPE: jenis GPU.
  • MINIMUM_ACCELERATOR: jumlah minimum akselerator GPU dalam cluster.
  • MAXIMUM_ACCELERATOR: jumlah maksimum akselerator GPU dalam cluster.

Contoh berikut menetapkan batas GPU untuk jenis akselerator GPU nvidia-tesla-k80 di cluster dev-cluster:

gcloud container clusters update dev-cluster \
    --enable-autoprovisioning \
    --max-cpu 10 \
    --max-memory 64 \
    --min-accelerator type=nvidia-tesla-k80,count=1 \
    --max-accelerator type=nvidia-tesla-k80,count=4

File

Anda dapat memuat batas untuk beberapa jenis GPU dengan menggunakan file konfigurasi. Konfigurasi YAML berikut mengonfigurasi dua jenis GPU yang berbeda:

  resourceLimits:
    - resourceType: 'cpu'
      minimum: 4
      maximum: 10
    - resourceType: 'memory'
      maximum: 64
    - resourceType: 'nvidia-tesla-k80'
      maximum: 4
    - resourceType: 'nvidia-tesla-v100'
      maximum: 2

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk cpu dan memory. Tambahkan nilai resourceType sebanyak yang Anda butuhkan. Simpan file.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • FILE_NAME: nama file konfigurasi.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud container clusters update.

Konsol

Untuk mengaktifkan penyediaan otomatis node dengan resource GPU, lakukan langkah-langkah berikut:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka halaman Google Kubernetes Engine

  2. Klik nama cluster.

  3. Di bagian Automation, untuk Node auto-provisioning, klik Edit.

  4. Centang kotak Enable node auto-provisioning.

  5. Tetapkan penggunaan CPU serta memori minimum dan maksimum yang Anda inginkan untuk cluster.

  6. Klik Add resource.

  7. Pilih jenis GPU (misalnya, NVIDIA TESLA K80) yang ingin Anda tambahkan. Tetapkan jumlah GPU minimum dan maksimum yang Anda inginkan untuk ditambahkan ke cluster.

  8. Setujui batasan GPU di GKE.

  9. Klik Simpan perubahan.

Pilih versi driver yang akan diinstal

Di GKE versi 1.29.2-gke.1108000 dan yang lebih baru, Anda dapat memilih versi driver GPU untuk GKE agar otomatis diinstal dalam node GPU yang disediakan secara otomatis. Tambahkan kolom berikut ke manifes Anda:

spec:
  nodeSelector:
    cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"

Ganti DRIVER_VERSION dengan salah satu nilai berikut:

  • default - driver default yang stabil untuk versi GKE node Anda. Jika Anda menghilangkan nodeSelector dalam manifes, ini adalah opsi default.
  • latest - versi driver terbaru yang tersedia untuk versi GKE node Anda.

Mengonfigurasi Cloud TPU

Mulai GKE versi 1.28, Anda dapat menggunakan penyediaan otomatis node dengan Cloud TPU. Namun, v5p tidak didukung pada penyediaan otomatis node dan penskalaan otomatis cluster. Tentukan batas TPU di tingkat cluster dan buat node pool TPU. Untuk mempelajari lebih lanjut cara kerja penyediaan otomatis node dengan TPU, lihat Akselerator machine learning yang didukung.

Buat cluster dan konfigurasikan Pod untuk menggunakan TPU resource dengan menggunakan gcloud CLI. Untuk mengonfigurasi beberapa jenis TPU, Anda harus menggunakan file konfigurasi.

gcloud

  1. Buat cluster dan tentukan batas TPU:

    gcloud container clusters create CLUSTER_NAME \
        --enable-autoprovisioning \
        [--min-cpu  MINIMUM_CPU ] \
        --max-cpu MAXIMUM_CPU \
        [--min-memory MINIMUM_MEMORY ] \
        --max-memory MAXIMUM_MEMORY \
        [--min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR ] \
        --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • MINIMUM_CPU: jumlah minimum vCPU dalam cluster.
    • MAXIMUM_CPU: jumlah maksimum vCPU dalam cluster.
    • MINIMUM_MEMORY: jumlah minimum gigabyte pada memori dalam cluster.
    • MAXIMUM_MEMORY: jumlah maksimum gigabyte pada memori dalam cluster.
    • TPU_TYPE: jenis TPU yang Anda pilih. Gunakan tpu-v4-podslice untuk memilih TPU v4. Untuk memilih TPU v5e dengan jenis mesin yang diawali dengan ct5lp-, gunakan tpu-v5-lite-podslice. Untuk memilih TPU v5e dengan jenis mesin yang diawali dengan ct5l-, gunakan tpu-v5-lite-device.
    • MINIMUM_ACCELERATOR: jumlah minimum TPU chip di cluster.
      • Perlu diperhatikan bahwa penggunaan MINIMUM_ACCELERATOR dapat memblokir penurunan skala slice TPU multi-host, meskipun count lebih kecil daripada jumlah TPU chip dalam slice.
    • MAXIMUM_ACCELERATOR: jumlah maksimum TPU chip dalam cluster.
      • Jika konfigurasi Pod meminta slice TPU multi-host, GKE akan membuat slice tersebut secara atomik. Menetapkan nilai jumlah yang cukup tinggi untuk memungkinkan penyediaan semua TPU chip dari topologi yang ditentukan. Jumlah chip di setiap slice TPU sama dengan produk topologi. Misalnya, jika topologi slice TPU multi-host adalah 2x2x2, jumlah TPU chip sama dengan 8, sehingga MAXIMUM_ACCELERATOR harus lebih tinggi dari 8.

    Contoh berikut menetapkan batas TPU untuk jenis mesin ct5lp-hightpu-1t, ct5lp-hightpu-4t, dan ct5lp-hightpu-8t di cluster dev-cluster. Misalnya, hingga sepuluh mesin ct5lp-hightpu-4t dapat disediakan, masing-masing dengan 4 TPU chip, 112 vCPU, dan memori 192 GiB.

    gcloud container clusters create dev-cluster-inference \
          --enable-autoprovisioning \
          --min-cpu 0 \
          --max-cpu 1120 \
          --min-memory 0 \
          --max-memory 1920 \
          --min-accelerator=type=tpu-v5-lite-podslice,count=0 \
          --max-accelerator=type=tpu-v5-lite-podslice,count=40
    
  2. Buat spesifikasi Deployment yang membuat Pod meminta TPU resource. Misalnya, manifes berikut akan menyebabkan GKE menyediakan empat node ct5lp-hightpu-4t:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tpu-workload
      labels:
        app: tpu-workload
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx-tpu
      template:
        metadata:
          labels:
            app: nginx-tpu
        spec:
          nodeSelector:
            cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice
            cloud.google.com/gke-tpu-topology:  2x2
            cloud.google.com/reservation-name: my-reservation
          containers:
          - name: nginx
            image: nginx:1.14.2
            resources:
              requests:
                google.com/tpu: 4
              limits:
                google.com/tpu: 4
            ports:
            - containerPort: 80
    

    Di kolom nodeSelector, Anda menentukan jenis TPU, topologi TPU, dan jumlah akselerator, dengan:

    • cloud.google.com/gke-tpu-accelerator: Menentukan jenis TPU. Contoh, tpu-v4-podslice.
    • cloud.google.com/gke-tpu-topology: Menentukan topologi TPU, misalnya, 2x2x1 atau 4x4x8.

    Untuk menggunakan reservasi yang ada dengan workload Anda, tentukan label tambahan di kolom nodeSelector: * cloud.google.com/reservation-name: Menentukan nama reservasi yang digunakan GKE untuk otomatis menyediakan node.

    Di bagian limits: google.com/tpu, Anda menentukan jumlah chip per node.

File

Anda dapat menetapkan batas untuk beberapa jenis TPU dengan menggunakan file konfigurasi. Konfigurasi YAML berikut mengonfigurasi dua jenis TPU yang berbeda:

  resourceLimits:
    - resourceType: 'cpu'
      maximum: 10000
    - resourceType: 'memory'
      maximum: 10000
    - resourceType: 'tpu-v4-podslice'
      maximum: 32
    - resourceType: 'tpu-v5-lite'
      maximum: 64

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk resourceType dan maximum. Tambahkan nilai resourceType sebanyak yang Anda butuhkan. Simpan file.

  2. Terapkan konfigurasi ke cluster Anda dengan menjalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoprovisioning \
    --autoprovisioning-config-file FILE_NAME

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • FILE_NAME: nama file konfigurasi.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi gcloud container clusters update.

Lokasi penyediaan otomatis node

Anda dapat menetapkan zona tempat penyediaan otomatis node dapat membuat node pool baru. Lokasi regional tidak didukung. Zona harus berada dalam region yang sama dengan cluster, tetapi tidak terbatas pada lokasi node yang ditentukan pada tingkat cluster. Mengubah lokasi penyediaan otomatis node tidak memengaruhi node pool yang ada.

Untuk menetapkan lokasi tempat penyediaan otomatis node dapat membuat node pool baru, gunakan gcloud CLI atau file konfigurasi.

gcloud

Jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
  --enable-autoprovisioning --autoprovisioning-locations=ZONE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • ZONE: zona tempat penyediaan otomatis node dapat membuat node pool baru. Untuk menentukan beberapa zona, pisahkan zona dengan koma (misalnya, ZONE1, ZONE2,...).

File

Untuk menetapkan lokasi tempat penyediaan otomatis node dapat membuat node pool baru, Anda dapat menggunakan file konfigurasi.

Tambahkan konfigurasi YAML berikut yang menetapkan lokasi node pool baru:

    autoprovisioningLocations:
      - ZONE

Ganti ZONE dengan zona tempat penyediaan otomatis node dapat membuat node pool baru. Untuk menentukan beberapa zona, tambahkan lebih banyak zona ke daftar. Simpan file.

Untuk menggunakan file konfigurasi penyediaan otomatis:

  1. Buat file konfigurasi di lokasi tempat gcloud CLI dapat mengaksesnya.

  2. Terapkan konfigurasi ke cluster Anda:

    gcloud container clusters update CLUSTER_NAME \
        --enable-autoprovisioning \
        --autoprovisioning-config-file FILE_NAME
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster.
    • FILE_NAME: jalur ke file konfigurasi.

Node yang lebih dekat secara fisik dengan penempatan rapat

Mulai GKE versi 1.25, penyediaan otomatis node mendukung kebijakan penempatan rapat. Dengan kebijakan penempatan rapat, Anda dapat menginstruksikan GKE untuk membuat node pool yang berdekatan satu sama lain dalam suatu zona.

Untuk menentukan kebijakan penempatan rapat, tambahkan nodeSelector ke spesifikasi Pod dengan kunci berikut:

  • cloud.google.com/gke-placement-group adalah ID yang Anda tetapkan untuk grup Pod yang harus berjalan bersama, dalam grup penempatan rapat yang sama.

  • cloud.google.com/machine-family adalah nama kelompok mesin. Untuk mengetahui informasi selengkapnya, lihat kelompok mesin yang mendukung penempatan rapat.

Contoh berikut menetapkan kebijakan penempatan rapat dengan ID grup penempatan placement-group-1, dan kelompok mesin c2:

apiVersion: v1
kind: Pod
metadata:
  ...
spec:
  ...
  nodeSelector:
    cloud.google.com/gke-placement-group: placement-group-1
    cloud.google.com/machine-family: c2

Untuk mengetahui informasi selengkapnya, lihat cara menentukan penempatan rapat untuk node GKE.

Menonaktifkan penyediaan otomatis node

Saat Anda menonaktifkan penyediaan otomatis node untuk cluster, node pool tidak lagi disediakan otomatis.

gcloud

Untuk menonaktifkan penyediaan otomatis node bagi cluster, jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
  --no-enable-autoprovisioning

Ganti CLUSTER_NAME dengan nama cluster Anda.

File

Untuk menonaktifkan penyediaan otomatis node menggunakan Konsol Google Cloud:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka halaman Google Kubernetes Engine

  2. Klik nama cluster.

  3. Di bagian Automation, untuk Penyediaan otomatis node, klik Edit.

  4. Hapus centang pada kotak Enable node auto-provisioning.

  5. Klik Save changes.

Menandai node pool sebagai disediakan otomatis

Setelah mengaktifkan penyediaan otomatis node pada cluster, Anda dapat menentukan node pool yang disediakan otomatis. Node pool yang disediakan otomatis akan dihapus secara otomatis saat tidak ada workload yang menggunakannya.

Untuk menandai node pool sebagai disediakan otomatis, jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
  --enable-autoprovisioning

Ganti NODE_POOL_NAME dengan nama node pool.

Menandai node pool sebagai tidak disediakan otomatis

Untuk menandai node pool sebagai tidak disediakan otomatis, jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
  --no-enable-autoprovisioning

Ganti NODE_POOL_NAME dengan nama node pool.

Menggunakan kelompok mesin kustom

Mulai GKE versi 1.19.7-gke.800, Anda dapat memilih kelompok mesin untuk workload Anda. Kelompok mesin T2D didukung di GKE versi 1.22 dan yang lebih baru.

Untuk memilih kelompok mesin bagi workload Anda, lakukan salah satu tugas berikut:

  • Tetapkan afinitas node dengan kunci cloud.google.com/machine-family, operator In, dan nilai menjadi kelompok mesin yang diinginkan (misalnya, n2).
  • Tambahkan nodeSelector dengan kunci cloud.google.com/machine-family dan nilainya adalah kelompok mesin yang diinginkan.

Berikut contoh yang menetapkan nodeAffinity ke kelompok mesin n2:

spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: cloud.google.com/machine-family
            operator: In
            values:
            - n2

Setelah menerapkan perubahan, penyediaan otomatis node akan memilih node pool terbaik dengan jenis mesin dalam kelompok mesin yang ditentukan. Jika beberapa nilai digunakan untuk ekspresi pencocokan, satu nilai akan dipilih secara acak.

Platform CPU minimum

Penyediaan otomatis node mendukung pembuatan node pool dengan platform CPU minimum yang ditentukan. Anda dapat menentukan platform CPU minimum di tingkat workload (direkomendasikan) atau di tingkat cluster.

Langkah selanjutnya