Membuat dan mengelola label node pool dan cluster


Halaman ini menyediakan ringkasan label cluster dan label node pool di Google Kubernetes Engine (GKE).

Label node pool dan cluster GKE serta label Kubernetes

Label cluster GKE dan node pool berbeda dengan label di Kubernetes. Kedua sistem pelabelan bekerja secara independen dan tidak mewarisi atau berbagi label.

Label cluster GKE dan node pool adalah metadata arbitrer yang dilampirkan ke resource Anda, yang dapat digunakan untuk melacak informasi penggunaan dan penagihan.

Secara terpisah, di Kubernetes, sistem menggunakan label secara internal untuk mengaitkan komponen cluster dan resource (misalnya, Pod dan node) satu sama lain dan mengelola siklus proses resource. Anda dapat mengedit label Kubernetes dengan Kubernetes API. Anda juga dapat menggunakan GKE API untuk mengedit label Kubernetes pada node Anda dengan pembuatan cluster atau dengan update cluster.

Apa itu label cluster?

Label cluster adalah pasangan nilai kunci yang dapat Anda tetapkan ke cluster Google Cloud. Label membantu Anda mengatur resource ini dan mengelola biaya dalam skala besar, dengan perincian yang Anda butuhkan. Anda dapat melampirkan label ke setiap resource, lalu memfilter resource berdasarkan labelnya. Informasi tentang label diteruskan ke sistem penagihan, sehingga Anda dapat mengelompokkan tagihan biaya berdasarkan label. Dengan laporan penagihan bawaan, Anda dapat memfilter dan mengelompokkan biaya berdasarkan label resource. Anda juga dapat menggunakan label untuk membuat kueri ekspor data penagihan.

Persyaratan untuk label cluster

Label cluster yang diterapkan ke resource harus memenuhi persyaratan berikut:

  • Setiap resource dapat memiliki hingga 64 label cluster.
  • Setiap label cluster harus berupa pasangan nilai kunci.
  • Kunci memiliki panjang minimum 1 karakter dan panjang maksimum 63 karakter, serta tidak boleh kosong. Nilai boleh kosong dan memiliki panjang maksimum 63 karakter.
  • Kunci dan nilai hanya boleh berisi huruf kecil, karakter numerik, garis bawah, dan tanda pisah. Semua karakter harus menggunakan encoding UTF-8, dan boleh menggunakan karakter internasional. Kunci harus diawali dengan huruf kecil atau karakter internasional.
  • Bagian kunci dari label cluster harus unik dalam satu resource. Namun, Anda dapat menggunakan kunci yang sama dengan beberapa resource.

Batasan ini berlaku untuk kunci dan nilai untuk setiap label cluster, serta untuk setiap resource Google Cloud yang memiliki label cluster. Tidak ada batasan jumlah label cluster yang dapat Anda terapkan di semua resource dalam sebuah project.

Penggunaan umum label cluster

Berikut adalah beberapa kasus penggunaan umum untuk label cluster:

  • Label cluster pusat biaya atau tim: Tambahkan label berdasarkan tim atau pusat biaya untuk membedakan cluster yang dimiliki oleh tim yang berbeda (misalnya, team:research dan team:analytics). Anda dapat menggunakan jenis label ini untuk akuntansi atau penganggaran biaya.

  • Label cluster komponen: Misalnya, component:redis, component:frontend, component:ingest, dan component:dashboard.

  • Label cluster lingkungan atau tahap: Misalnya, environment:production dan environment:test.

  • Label cluster status: Misalnya, state:active, state:readytodelete, dan state:archive.

  • Label cluster kepemilikan: Digunakan untuk mengidentifikasi tim yang bertanggung jawab atas operasi, misalnya: team:shopping-cart.

Sebaiknya Anda tidak membuat label unik dalam jumlah besar, seperti untuk stempel waktu atau nilai individual bagi setiap panggilan API. Masalah dari pendekatan ini adalah ketika nilai sering berubah atau dengan kunci yang mengacaukan katalog, ini akan menyulitkan pemfilteran dan pelaporan resource secara efektif.

Label dan tag

Label dapat digunakan sebagai anotasi yang dapat dikueri untuk resource, tetapi tidak dapat digunakan untuk menetapkan kondisi pada kebijakan. Tag menyediakan cara untuk mengizinkan atau menolak kebijakan secara bersyarat berdasarkan apakah resource memiliki tag tertentu, dengan memberikan kontrol terperinci atas kebijakan. Untuk informasi selengkapnya, lihat Ringkasan tag.

Label yang diterapkan secara otomatis

GKE secara otomatis menerapkan beberapa label ke resource cluster.

Misalnya, GKE menerapkan label ke instance Compute Engine, persistent disk, dan akselerator (TPU).

Tabel berikut mencantumkan label yang otomatis diterapkan GKE ke resource:

Label Referensi yang Diterapkan
goog-gke-node Instance VM Compute Engine yang mendasari node GKE.
goog-gke-volume Persistent disk Compute Engine yang dipasang ke instance VM yang mendasari node GKE.
goog-gke-tpu Cloud TPU di GKE.
goog-k8s-cluster-name Instance VM Compute Engine dan persistent disk yang dipasang ke instance VM yang mendasari node GKE.
goog-k8s-cluster-location Instance VM Compute Engine dan persistent disk yang dipasang ke instance VM yang mendasari node GKE.
goog-k8s-node-pool-name Instance VM Compute Engine dan boot disk-nya yang mendasari node GKE.
goog-fleet-project Instance VM Compute Engine dan persistent disk yang dipasang ke instance VM yang mendasari node GKE, jika cluster didaftarkan ke fleet.

Jangan mengedit atau menghapus label yang dicadangkan. Setiap perubahan yang Anda buat pada label yang dicadangkan akan direkonsiliasi secara otomatis.

Penyebaran label

Di GKE, Anda dapat menerapkan label ke cluster dan ke node pool Mode standar. Saat Anda memberi label pada sebuah cluster, label tersebut akan diterapkan ke semua resource individual cluster seperti node, instance, dan persistent disk. Saat Anda memberi label pada node pool, label akan diterapkan ke semua resource individual node pool seperti instance dan persistent disk. Di cluster Standar, jika label cluster bertentangan dengan label node pool, seperti saat kunci label sama tetapi nilainya berbeda, label node pool akan menggantikan label cluster.

Setiap label yang Anda terapkan ke cluster atau node pool akan disebarkan melalui proses latar belakang yang berjalan setiap jam. Diperlukan waktu hingga satu jam agar label muncul di semua resource yang terkait dengan cluster tertentu. Selain itu, label hanya disebarkan ke instance Compute Engine dan Persistent Disk yang terpasang ke instance Compute Engine. Resource lain seperti beban kerja, aturan penerusan, alamat IP, dan Persistent Disk yang tidak terpasang tidak diberi label.

Untuk cluster Standar, saat label cluster dan node pool diterapkan ke resource Compute Engine, Anda dapat mengubah label resource secara manual tanpa merekonsiliasi perubahan tersebut oleh GKE. Dalam cluster Autopilot, Anda tidak dapat mengubah label secara manual pada resource Compute Engine karena GKE mengelola node untuk Anda. Namun, sebaiknya kelola label ini melalui GKE. Label yang sudah ada di resource Compute Engine tersebut tidak akan dihapus oleh GKE kecuali jika label tersebut bertentangan dengan label yang diterapkan secara otomatis.

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 lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Mendapatkan sidik jari label untuk permintaan API

Langkah ini dapat dilewati jika Anda menggunakan Google Cloud Console atau gcloud CLI.

Saat mengupdate atau menambahkan label cluster menggunakan GKE API, Anda harus memberikan sidik jari label cluster terbaru dengan permintaan Anda untuk mencegah konflik dengan permintaan lainnya.

Untuk mendapatkan sidik jari label cluster terbaru, jalankan permintaan GET untuk cluster yang sesuai. Contoh:

GET https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster

Outputnya mirip dengan hal berikut ini:

200 OK

{

 "name": "mycluster",
 "description": "production-cluster",
 "initialNodeCount": 3,
 ...
 "resourceLabels": {
    "environment": "production",
    ...
  },
  "labelFingerprint": "p1ty_9HoBk0="
}

Dalam output ini, properti labelFingerprint adalah sidik jari label cluster.

Membuat cluster dengan label

Anda dapat membuat cluster Autopilot dan Standar dengan label menggunakan gcloud CLI, konsol Google Cloud, GKE API, atau Terraform.

gcloud

Jalankan perintah berikut untuk membuat cluster Autopilot dengan label:

gcloud container clusters create-auto CLUSTER_NAME \
    --labels=KEY=VALUE

Atau, jalankan perintah berikut untuk membuat cluster Standard dengan label:

gcloud container clusters create CLUSTER_NAME \
    --labels=KEY=VALUE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • KEY: kunci untuk pasangan nilai kunci label.
  • VALUE: nilai untuk pasangan nilai kunci label.

Konsol

Untuk menambahkan label saat membuat cluster, lakukan hal berikut:

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

    Buka Google Kubernetes Engine

  2. Klik Buat.

  3. Konfigurasikan cluster Anda.

  4. Dari panel navigasi, pada Cluster, klik Metadata.

  5. Klik Add label.

  6. Tambahkan label.

  7. Klik Create.

API

Untuk menyertakan label saat membuat cluster, tentukan objek resourceLabels dalam objek cluster yang Anda berikan ke projects.zones.clusters.create.

Terraform

Untuk membuat cluster Autopilot dengan label menggunakan Terraform, lihat contoh berikut:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-labels"
  location = "us-central1"

  enable_autopilot = true

  resource_labels = {
    foo = "bar"
  }

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Untuk membuat cluster Standard dengan label menggunakan Terraform, lihat contoh berikut:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-labels"
  location           = "us-central1"
  initial_node_count = 2

  resource_labels = {
    foo = "bar"
  }

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Menambahkan atau memperbarui label untuk cluster yang ada

Anda dapat menambahkan atau memperbarui label untuk cluster Autopilot dan Standar yang ada menggunakan gcloud CLI, konsol Google Cloud, atau GKE API.

gcloud

Jalankan perintah berikut:

gcloud container clusters update CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --update-labels=KEY=VALUE

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • COMPUTE_REGION: region Compute Engine untuk cluster baru. Untuk cluster Standar zona, gunakan --zone=COMPUTE_ZONE.
  • KEY: kunci untuk pasangan nilai kunci label.
  • VALUE: nilai untuk pasangan nilai kunci label.

Pembaruan label akan menimpa label yang ada di cluster. Jika cluster memiliki label yang ingin dipertahankan, Anda harus menyertakan label tersebut bersama dengan label baru yang ingin ditambahkan.

Konsol

Untuk menambahkan atau memperbarui label, lakukan langkah-langkah berikut:

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

    Buka Google Kubernetes Engine

  2. Di halaman Cluster details, pilih kotak centang untuk satu atau beberapa cluster yang ingin diubah.

  3. Klik Labels.

  4. Tambahkan atau perbarui label.

  5. Klik Save.

API

Buat permintaan POST ke metode resourceLabels cluster dengan sidik jari terbaru dan daftar lengkap label yang akan diterapkan singkat ini.

Serupa dengan metadata dan tag, jika cluster memiliki label yang ingin dipertahankan, Anda harus menyertakan label tersebut dalam permintaan beserta label aru yang ingin ditambahkan.

Misalnya, cuplikan berikut membuat permintaan ke metode resourceLabels:

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

{
 "resourceLabels": {
  "environment": "production",
  "an-existing-tag": ""
 },
 "labelFingerprint": "42WmSpB8rSM="
}

Menghapus label cluster

Anda dapat menghapus label dari cluster Autopilot dan Standar menggunakan gcloud CLI, Google Cloud Console, atau GKE API.

gcloud

Jalankan perintah update dengan flag --remove-labels:

gcloud container clusters update CLUSTER_NAME \
    --remove-labels=KEYS

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • KEYS: daftar kunci yang dipisahkan koma untuk label yang ingin Anda hapus.

Konsol

Untuk menghapus label, lakukan langkah-langkah berikut:

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

    Buka Google Kubernetes Engine

  2. Dalam daftar cluster, pilih kotak centang untuk satu atau beberapa cluster yang ingin diubah.

  3. Klik Labels.

  4. Klik Delete item di samping kolom Value untuk label yang ingin Anda hapus.

  5. Klik Save.

API

Buat permintaan POST ke metode resourceLabels untuk cluster yang sesuai. Berikan labelsFingerprint saat ini dan daftar label kosong untuk menghapus semua label, atau berikan daftar label yang ingin Anda pertahankan, dengan menghilangkan label yang ingin Anda hapus. Contoh:

Request

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

{
 "resourceLabels": { },
 "labelFingerprint": "42WmSpB8rSM="
}

Membuat node pool Standar dengan label

Anda dapat membuat node pool dengan label dalam cluster Standar menggunakan gcloud CLI, Google Cloud Console, atau GKE API.

gcloud

Jalankan perintah berikut:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool.
  • CLUSTER_NAME: nama cluster.
  • COMPUTE_REGION: region Compute Engine untuk cluster Anda. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.
  • KEY: kunci untuk pasangan nilai kunci label.
  • VALUE: nilai untuk pasangan nilai kunci label.

API

Untuk menyertakan label saat membuat node pool, tentukan objek resourceLabels dalam objek node pool yang Anda berikan ke projects.zones.clusters.nodePools.create.

Konsol

Untuk menambahkan label ke node pool baru, lakukan langkah berikut:

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

    Buka Google Kubernetes Engine

  2. Di halaman Cluster details, klik nama cluster yang ingin diubah.

  3. Klik Add Node Pool.

  4. Konfigurasikan node pool baru.

  5. Dari panel navigasi, klik Metadata.

  6. Klik Add label.

  7. Tambahkan label.

  8. Klik Create.

Menambahkan atau memperbarui label untuk node pool yang ada

Anda dapat menambahkan atau memperbarui label untuk node pool yang ada menggunakan gcloud CLI, Google Cloud Console, atau GKE API.

Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node tanpa mengikuti kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.

gcloud

Jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool
  • CLUSTER_NAME: nama cluster.
  • COMPUTE_REGION: region Compute Engine untuk cluster Anda. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.
  • KEY: kunci untuk pasangan nilai kunci label.
  • VALUE: nilai untuk pasangan nilai kunci label.

Pembaruan label akan menimpa label yang ada di node pool. Jika node pool sudah memiliki label yang ingin Anda pertahankan, Anda harus menyertakan label tersebut bersama dengan label baru yang ingin Anda tambahkan.

API

Untuk menyertakan label saat mengubah node pool, tentukan objek resourceLabels dalam objek node pool yang Anda berikan ke projects.zones.clusters.nodePools.update.

Konsol

Untuk menambahkan atau memperbarui label, lakukan langkah-langkah berikut:

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

    Buka Google Kubernetes Engine

  2. Dalam daftar cluster, klik nama cluster yang berisi node pool yang ingin diubah.

  3. Di bagian Node Pools, klik nama node pool yang ingin Anda ubah.

  4. Klik Edit

  5. Di bagian Label, tambahkan atau perbarui label.

  6. Klik Save.

Menghapus label node pool

Anda dapat menghapus label dari node pool menggunakan gcloud CLI, Google Cloud Console, atau GKE API.

gcloud

Jalankan perintah berikut:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Ganti kode berikut:

  • NODE_POOL_NAME: nama node pool.
  • CLUSTER_NAME: nama cluster.
  • COMPUTE_REGION: region Compute Engine untuk cluster Anda. Untuk cluster zona, gunakan --zone=COMPUTE_ZONE.
  • KEY: kunci untuk pasangan nilai kunci label.
  • VALUE: nilai untuk pasangan nilai kunci label.

Pembaruan label akan menimpa label yang ada di node pool. Jika node pool memiliki label yang ingin Anda pertahankan, Anda harus mengecualikan setiap label yang ingin Anda hapus. Jika Anda ingin menghapus semua label, gunakan --labels= tanpa pasangan nilai kunci apa pun.

API

Untuk menyertakan label saat mengubah node pool, tentukan objek resourceLabels dalam objek node pool yang Anda berikan ke projects.zones.clusters.nodePools.update. Berikan daftar label kosong untuk menghapus semua label, atau berikan daftar label yang ingin Anda pertahankan. Hilangkan label yang ingin Anda hapus.

Konsol

Untuk menghapus label dari node pool, lakukan tindakan berikut

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

    Buka Google Kubernetes Engine

  2. Dalam daftar cluster, klik nama cluster yang berisi node pool yang ingin diubah.

  3. Di bagian Node Pools, klik nama node pool yang ingin Anda ubah.

  4. Klik Delete item di samping kolom Value untuk label yang ingin Anda hapus.

  5. Klik Save.

Langkah berikutnya

Baca ringkasan GKE.