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:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Klik nama cluster.
Di bagian Automation, untuk Node auto-provisioning, klik
Edit.Centang kotak Enable node auto-provisioning.
Tetapkan penggunaan CPU serta memori minimum dan maksimum yang Anda inginkan untuk cluster.
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:
Buat file dengan konfigurasi yang diinginkan di lokasi tempat gcloud CLI dapat mengaksesnya.
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.
Simpan konfigurasi YAML:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 imageType: 'cos_containerd'
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:
Buat file konfigurasi yang menentukan default identitas di lokasi tempat gcloud CLI dapat mengaksesnya.
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:
Buat file konfigurasi yang menentukan kunci CMEK di lokasi tempat gcloud CLI dapat mengaksesnya.
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:
Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk
enableSecureBoot
danenableIntegrityMonitoring
. Simpan file.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:
Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk
autoUpgrade
danautoRepair
. Simpan file tersebut.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:
Salin konfigurasi di atas ke file di lokasi tempat
gcloud
dapat mengaksesnya. Edit nilai untukmaxSurgeUpgrade
danmaxUnavailableUpgrade
. Simpan file.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
= 1BATCH_SOAK_DURATION
= 0 detikNODE_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:
- menggunakan perintah
gcloud container clusters create
untuk membuat cluster dengan penyediaan otomatis node diaktifkan. - menggunakan perintah
gcoud container clusters update
untuk mengaktifkan penyediaan otomatis node.
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 menentukanpd-ssd
, penyediaan otomatis node hanya mempertimbangkan jenis mesin N1 saat membuat node pool.
Untuk menggunakan file konfigurasi penyediaan otomatis:
Buat file dengan konfigurasi boot disk yang diinginkan di lokasi tempat gcloud CLI dapat mengaksesnya.
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.
Buat cluster dengan node pool default VM
e2-standard-2
:gcloud container clusters create test --machine-type=e2-standard-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
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.
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 nodededicated: ui-team
. Tanpa penyediaan otomatis node, Pod workload ini tidak dapat dijadwalkan karena tidak ada node pool yang memiliki label dan taint yang tepat.Terapkan manifes ke cluster:
kubectl apply -f nginx.yaml
Outputnya mirip dengan kode berikut:
pod/nginx created
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:
Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk
cpu
danmemory
. Tambahkan nilairesourceType
sebanyak yang Anda butuhkan. Simpan file.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:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Klik nama cluster.
Di bagian Automation, untuk Node auto-provisioning, klik
Edit.Centang kotak Enable node auto-provisioning.
Tetapkan penggunaan CPU serta memori minimum dan maksimum yang Anda inginkan untuk cluster.
Klik
Add resource.Pilih jenis GPU (misalnya, NVIDIA TESLA K80) yang ingin Anda tambahkan. Tetapkan jumlah GPU minimum dan maksimum yang Anda inginkan untuk ditambahkan ke cluster.
Setujui batasan GPU di GKE.
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
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. Gunakantpu-v4-podslice
untuk memilih TPU v4. Untuk memilih TPU v5e dengan jenis mesin yang diawali denganct5lp-
, gunakantpu-v5-lite-podslice
. Untuk memilih TPU v5e dengan jenis mesin yang diawali denganct5l-
, gunakantpu-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, meskipuncount
lebih kecil daripada jumlah TPU chip dalam slice.
- Perlu diperhatikan bahwa penggunaan
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 dengan8
, sehinggaMAXIMUM_ACCELERATOR
harus lebih tinggi dari 8.
- 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
Contoh berikut menetapkan batas TPU untuk jenis mesin
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
, danct5lp-hightpu-8t
di clusterdev-cluster
. Misalnya, hingga sepuluh mesinct5lp-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
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
atau4x4x8
.
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:
Salin konfigurasi di atas ke file di lokasi tempat gcloud CLI dapat mengaksesnya. Edit nilai untuk
resourceType
danmaximum
. Tambahkan nilairesourceType
sebanyak yang Anda butuhkan. Simpan file.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:
Buat file konfigurasi di lokasi tempat
gcloud CLI
dapat mengaksesnya.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:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Klik nama cluster.
Di bagian Automation, untuk Penyediaan otomatis node, klik
Edit.Hapus centang pada kotak Enable node auto-provisioning.
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
, operatorIn
, dan nilai menjadi kelompok mesin yang diinginkan (misalnya,n2
). - Tambahkan
nodeSelector
dengan kuncicloud.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
- Pelajari lebih lanjut autoscaler cluster.
- Pelajari node pool lebih lanjut.
- Pelajari strategi upgrade node lebih lanjut.