Mengupdate cluster

Setelah membuat cluster, Anda dapat mengubah beberapa aspek konfigurasi cluster. Misalnya, Anda dapat:

  • Menambahkan, menghapus, atau mengganti node.
  • Tambahkan atau hapus anotasi ke cluster.
  • Ubah nilai kolom yang dapat diubah dalam resource cluster dan node pool.
  • Ubah resource kustom lainnya.

Anda dapat menggunakan bmctl atau Google Cloud CLI untuk melakukan update pada cluster. Jika Anda membuat cluster admin atau pengguna menggunakan Terraform, Anda dapat menggunakan Terraform untuk memperbarui cluster. Perhatikan hal berikut:

  • Banyak aspek konfigurasi cluster Anda yang tidak dapat diubah dan tidak dapat diperbarui setelah Anda membuat cluster. Untuk daftar lengkap kolom yang dapat diubah dan tidak dapat diubah, lihat Referensi kolom konfigurasi cluster. Referensi kolom adalah tabel yang dapat diurutkan. Klik judul kolom untuk mengubah urutan pengurutan. Klik nama kolom untuk melihat deskripsinya.

  • gcloud CLI dan Terraform hanya mendukung pembaruan cluster admin dan pengguna. Anda harus menggunakan bmctl untuk mengupdate jenis cluster lainnya.

  • CLI gcloud dan Terraform hanya mendukung perubahan pada resource cluster dan node pool. Anda harus menggunakan kubectl atau bmctl untuk memperbarui resource kustom lainnya yang memengaruhi cluster.

Halaman ini ditujukan untuk Admin, arsitek, dan Operator yang mengelola siklus proses infrastruktur teknologi dasar. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE Enterprise umum. Google Cloud

Cara mengupdate cluster

Secara umum, Anda melakukan urutan tindakan berikut untuk mengupdate cluster:

bmctl

  1. Ubah nilai kolom yang berlaku dalam file konfigurasi cluster, yang secara default terletak di sini:
    bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml

  2. Perbarui cluster dengan menjalankan perintah bmctl update:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster yang ingin Anda perbarui.
    • KUBECONFIG: untuk cluster admin, hybrid, atau mandiri, masukkan jalur ke file kubeconfig cluster. Untuk cluster pengguna, masukkan jalur ke file kubeconfig cluster admin.

gcloud CLI

  1. Tentukan hanya tanda untuk konfigurasi yang ingin Anda ubah.

  2. Jalankan perintah update yang berlaku:

Terraform

  1. Ubah nilai kolom yang berlaku dalam file konfigurasi Terraform yang Anda gunakan untuk membuat cluster atau node pool. Lihat dokumentasi referensi Terraform untuk deskripsi kolom mendetail:

  2. Perbarui konfigurasi dengan menjalankan perintah terraform apply.

Bagian berikut menguraikan beberapa contoh umum untuk memperbarui cluster yang ada.

Menambahkan atau menghapus node dalam cluster

Node pool adalah sekelompok node dalam cluster yang memiliki konfigurasi yang sama. Perlu diingat bahwa node selalu menjadi bagian dari kumpulan node. Untuk menambahkan node baru ke cluster, Anda perlu menambahkannya ke node pool tertentu. Menghapus node dari node pool sama dengan menghapus node dari cluster sepenuhnya.

Ada tiga jenis node pool di Google Distributed Cloud: bidang kontrol, load balancer, dan worker node pool. Bagian berikut menjelaskan cara menambahkan atau menghapus node dari setiap jenis node pool.

bmctl

Anda menambahkan atau menghapus node dari node pool dengan menambahkan atau menghapus alamat IP node di bagian tertentu dari file konfigurasi cluster. Daftar berikut menunjukkan bagian yang harus diedit untuk node pool tertentu:

  • Node pool pekerja: tambahkan atau hapus alamat IP node di bagian spec.nodes spesifikasi NodePool.
  • Node pool bidang kontrol: tambahkan atau hapus alamat IP node di bagian spec.controlPlane.nodePoolSpec.nodes spesifikasi Cluster.
  • Node pool load balancer: tambahkan atau hapus alamat IP node di bagian spec.loadBalancer.nodePoolSpec.nodes spesifikasi Cluster.

Contoh: menghapus node pekerja

Berikut adalah contoh file konfigurasi cluster yang menunjukkan spesifikasi dua node pekerja:

---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: nodepool1
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  nodes:
  - address: 192.0.2.1
  - address: 192.0.2.2

Untuk menghapus node:

  1. (Opsional) Jika node yang Anda hapus menjalankan Pod penting, masukkan node ke mode pemeliharaan terlebih dahulu.

    Anda dapat memantau proses pengurasan node untuk node pekerja dengan melihat kolom status.nodesDrained dan status.nodesDraining pada resource NodePool.

  2. Edit file konfigurasi cluster untuk menghapus entri alamat IP untuk node.

  3. Update cluster:

    bmctl update cluster1 \
        --kubeconfig=ADMIN_KUBECONFIG
    

gcloud CLI

Anda menggunakan perintah update untuk menambahkan atau menghapus node. Perintah update yang Anda gunakan dan flag tempat Anda menentukan alamat IP bergantung pada jenis kumpulan node yang ingin Anda perbarui:

  • Worker node pool: Jalankan gcloud container bare-metal node-pools update dan tentukan alamat IP di flag --node-configs 'node-ip=IP_ADDRESS'.

  • Kumpulan node bidang kontrol di cluster admin: Jalankan gcloud container bare-metal admin-clusters update dan tentukan alamat IP di flag --control-plane-node-configs 'node-ip=IP_ADDRESS'.

  • Node pool bidang kontrol di cluster pengguna: Jalankan gcloud container bare-metal clusters update dan tentukan alamat IP dalam tanda --control-plane-node-configs 'node-ip=IP_ADDRESS'.

  • Node pool load balancer: Jalankan gcloud container bare-metal clusters update dan tentukan alamat IP dalam flag --metal-lb-load-balancer-node-configs 'node-ip=IP_ADDRESS' atau
    --bgp-load-balancer-node-configs 'node-ip=IP_ADDRESS'

Flag tempat Anda menentukan alamat IP hanya menerima satu node-ip. Anda menyertakan flag untuk setiap alamat IP di node pool.

Perintah update menggantikan semua alamat IP dengan alamat IP yang Anda tentukan. Untuk menambahkan node, sertakan alamat IP node yang ada dan alamat IP node baru dalam perintah update. Demikian pula, Anda menghapus node hanya dengan menyertakan alamat IP node yang ingin Anda pertahankan.

Contoh: menghapus node pekerja

Bagian ini menunjukkan cara menghapus node pekerja dari node pool menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna juga disertakan dalam langkah-langkah berikut.

  1. (Opsional) Jika node yang Anda hapus menjalankan Pod penting, masukkan node ke mode pemeliharaan terlebih dahulu.

    Anda dapat memantau proses pengurasan node untuk node pekerja dengan melihat kolom status.nodesDrained dan status.nodesDraining pada resource NodePool.

  2. Jalankan perintah list untuk mencantumkan semua node pool dalam cluster:

    gcloud container bare-metal node-pools list \
        --cluster=abm-user-cluster1 \
        --project=example-project-12345 \
        --location=us-central1
    

    Outputnya mirip dengan hal berikut ini:

    NAME         LOCATION     STATE
    node-pool-1  us-central1  RUNNING
    node-pool-2  asia-east1   RUNNING
    
  3. Jalankan perintah describe untuk mencantumkan semua alamat IP di node pool:

    gcloud container bare-metal node-pools describe node-pool-1 \
        --cluster=abm-user-cluster1 \
        --project=example-project-12345 \
        --location=us-central1
    

    Contoh output berikut dipangkas agar mudah dibaca:

    annotations:
      ...
      baremetal.cluster.gke.io/version: 1.33
    ...
    name: projects/example-project-12345/locations/us-central1/bareMetalClusters/abm-user-cluster1/bareMetalNodePools/node-pool-1
    nodePoolConfig:
      nodeConfigs:
      - nodeIp: 192.0.2.1
      - nodeIp: 192.0.2.2
      operatingSystem: LINUX
    state: RUNNING
    ...
    

    Perhatikan hal berikut dalam contoh output:

    • Kolom name berisi nama node pool yang sepenuhnya memenuhi syarat. Saat menentukan nama node pool dalam perintah, Anda dapat menentukan nama yang sepenuhnya memenuhi syarat, atau nama node pool, misalnya, node-pool-1, bersama dengan flag --cluster, --project, dan --location.

    • Bagian nodeConfigs berisi dua kolom nodeIp dengan alamat IP node.

  4. Jalankan perintah berikut untuk menghapus node dengan alamat IP 192.0.2.1:

    gcloud container bare-metal node-pools update node-pool-1 \
        --cluster=abm-user-cluster1 \
        --project=example-project-12345 \
        --location=us-central1 \
        --node-configs='node-ip=192.0.2.2'
    

    Perintah update menggantikan semua alamat IP dengan alamat IP yang Anda tentukan. Karena 192.0.2.1 tidak disertakan, node akan dihapus.

    Output perintah ini akan mirip dengan berikut ini:

    Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9] to complete
    

    Dalam contoh output, string operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9 adalah OPERATION_ID dari operasi yang berjalan lama. Anda dapat mengetahui status operasi dengan menjalankan perintah berikut di jendela terminal lain:

    gcloud container bare-metal operations describe operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9 \
        --project= example-project-12345 \
        --location=us-central1
    

    Anda dapat menjalankan kembali perintah sesekali untuk memeriksa statusnya.

Jika penghapusan node gagal, Anda dapat memaksa penghapusannya dari cluster. Untuk mengetahui detailnya, lihat Mereset node yang gagal di Google Distributed Cloud.

Mengganti node bidang kontrol HA

bmctl

Anda dapat menggunakan bmctl untuk mengganti node bidang kontrol dengan ketersediaan tinggi (HA) di semua jenis cluster.

Anda mengganti node dalam cluster dengan melakukan langkah-langkah berikut:

  1. Hapus alamat IP node dari file konfigurasi cluster.
  2. Perbarui cluster.
  3. Periksa status node di cluster.
  4. Tambahkan alamat IP node baru ke file konfigurasi cluster yang sama.
  5. Perbarui cluster.

Contoh: mengganti node bidang kontrol HA

Berikut adalah contoh file konfigurasi cluster yang menampilkan tiga node bidang kontrol di cluster pengguna:

---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: user-cluster
namespace: cluster-user-cluster
spec:
  controlPlane:
  nodePoolSpec:
    nodes:
    - address: 192.0.2.11
    - address: 192.0.2.12
    - address: 192.0.2.13

Untuk mengganti node terakhir yang tercantum di bagian spec.controlPlane.nodePoolSpec.nodes, lakukan langkah-langkah berikut:

  1. Hapus node dengan menghapus entri alamat IP-nya dalam file konfigurasi cluster. Setelah melakukan perubahan ini, file konfigurasi cluster akan terlihat seperti ini:

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
    name: user-cluster
    namespace: cluster-user-cluster
    spec:
      controlPlane:
      nodePoolSpec:
        nodes:
        - address: 192.0.2.11
        - address: 192.0.2.12
    
  2. Update cluster dengan menjalankan perintah berikut:

    bmctl update cluster -c CLUSTER_NAME \
      --kubeconfig=KUBECONFIG
    

    Buat perubahan berikut:

    • Ganti CLUSTER_NAME dengan nama cluster yang ingin Anda perbarui.
    • Jika cluster adalah cluster yang dikelola sendiri (seperti cluster admin atau mandiri), ganti KUBECONFIG dengan jalur ke file kubeconfig cluster. Jika cluster adalah cluster pengguna, seperti dalam contoh ini, ganti KUBECONFIG dengan jalur ke file kubeconfig cluster admin.
  3. Setelah perintah bmctl update berhasil dijalankan, perlu waktu beberapa saat untuk menyelesaikan tugas machine-preflight dan machine-init. Anda dapat melihat status node dan kumpulan node masing-masing dengan menjalankan perintah yang dijelaskan di bagian Verifikasi update Anda dalam dokumen ini. Setelah node pool dan node dalam status siap, Anda dapat melanjutkan ke langkah berikutnya.

  4. Tambahkan node bidang kontrol baru ke node pool dengan menambahkan alamat IP node bidang kontrol baru ke bagian spec.controlPlane.nodePoolSpec.nodes file konfigurasi cluster. Setelah melakukan perubahan ini, file konfigurasi cluster akan terlihat seperti ini:

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
    name: user-cluster
    namespace: cluster-user-cluster
    spec:
      controlPlane:
      nodePoolSpec:
        nodes:
        - address: 192.0.2.11
        - address: 192.0.2.12
        - address: 192.0.2.14
    
  5. Update cluster dengan menjalankan perintah berikut:

    bmctl update cluster -c CLUSTER_NAME \
      --kubeconfig=KUBECONFIG
    

gcloud CLI

Anda dapat menggunakan gcloud CLI untuk mengganti node panel kontrol ketersediaan tinggi (HA) di cluster admin dan pengguna.

Anda mengganti node dalam cluster dengan melakukan langkah-langkah berikut:

  1. Hapus alamat IP node dengan menjalankan perintah update yang berlaku:

    • Grup pengguna: gcloud container bare-metal clusters update
    • Cluster admin: gcloud container bare-metal admin-clusters update
  2. Periksa status penghapusan node di cluster dengan menjalankan gcloud container bare-metal operations describe OPERATION_ID.

  3. Tambahkan alamat IP node baru dengan menjalankan perintah update yang berlaku.

Contoh: mengganti node bidang kontrol HA

Bagian ini menunjukkan cara mengganti panel kontrol dari cluster menggunakan data contoh. Perintah gcloud CLI tambahan yang mungkin berguna juga disertakan dalam langkah-langkah berikut.

  1. Jalankan perintah list untuk mencantumkan semua cluster pengguna dalam projectGoogle Cloud :

    gcloud container bare-metal clusters list \
        --project=example-project-12345 \
        --location=-
    

    Jika Anda menetapkan --location=-, artinya mencantumkan semua cluster di semua wilayah. Jika Anda perlu mempersempit daftar, tetapkan --location ke region tertentu.

    Outputnya mirip dengan hal berikut ini:

    NAME                 LOCATION      VERSION   ADMIN_CLUSTER        STATE
    abm-user-cluster1a   us-central1   1.33      abm-admin-cluster1   RUNNING
    abm-user-cluster1b   europe-west1  1.33      abm-admin-cluster1   RUNNING
    
  2. Jalankan perintah describe di cluster:

    gcloud container bare-metal clusters describe abm-user-cluster1  \
        --project=example-project-12345 \
        --location=us-central1
    

    Contoh output dipotong agar lebih mudah dibaca:

    ...
    controlPlane:
      controlPlaneNodePoolConfig:
        nodePoolConfig:
          nodeConfigs:
          - nodeIp: 192.0.2.11
          - nodeIp: 192.0.2.12
          - nodeIp: 192.0.2.13
          operatingSystem: LINUX
    ...
    name: projects/example-project-1234567/locations/us-central1/bareMetalClusters/abm-user-cluster1a
    ...
    

    Perhatikan hal berikut dalam contoh output:

    • Kolom name berisi nama cluster yang sepenuhnya memenuhi syarat. Saat menentukan nama cluster dalam perintah, Anda dapat menentukan nama yang sepenuhnya memenuhi syarat, atau nama cluster, misalnya, abm-user-cluster1a, beserta --project dan --location flags.

    • Bagian nodeConfigs berisi tiga kolom nodeIp dengan alamat IP node bidang kontrol.

  3. Hapus node dengan alamat IP 192.0.2.13:

    gcloud container bare-metal cluster update abm-user-cluster1a \
        --project=example-project-12345 \
        --location=us-central1 \
        --control-plane-node-configs 'node-ip=192.0.2.11'
        --control-plane-node-configs 'node-ip=192.0.2.12'
    

    Output perintah ini akan mirip dengan berikut ini:

    Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1956154681749-6078d9def4030-76686d6e-9fcb1d7] to complete
    

    Dalam contoh output, string operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7 adalah OPERATION_ID dari operasi yang berjalan lama. Anda dapat mengetahui status operasi dengan menjalankan perintah berikut di jendela terminal lain:

    gcloud container bare-metal operations describe operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7 \
        --project= example-project-12345 \
        --location=us-central1
    

    Anda dapat menjalankan kembali perintah sesekali untuk memeriksa statusnya.

  4. Tambahkan node baru dengan alamat IP 192.0.2.14:

    gcloud container bare-metal cluster update abm-user-cluster1a \
        --project=example-project-12345 \
        --location=us-central1 \
        --control-plane-node-configs 'node-ip=192.0.2.11'
        --control-plane-node-configs 'node-ip=192.0.2.12'
        --control-plane-node-configs 'node-ip=192.0.2.14'
    

Memverifikasi pembaruan Anda

kubectl

Anda dapat melihat status node dan node pool masing-masing dengan perintah kubectl get.

Misalnya, perintah berikut menampilkan status node pool di namespace cluster cluster-my-cluster:

kubectl -n cluster-my-cluster get nodepools.baremetal.cluster.gke.io

Sistem akan menampilkan hasil yang mirip dengan berikut ini:

NAME                    READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
cluster-my-cluster      3       0             0         0                  0
cluster-my-cluster-lb   2       0             0         0                  0
np1                     3       0             0         0                  0

Reconciling=1 berarti langkah rekonsiliasi masih dalam proses. Anda harus menunggu hingga statusnya berubah menjadi Reconciling=0.

Anda juga dapat memeriksa status node dalam cluster dengan menjalankan perintah berikut:

kubectl get nodes --kubeconfig=KUBECONFIG

gcloud CLI

Seperti yang dijelaskan sebelumnya, setelah menjalankan perintah update, Anda dapat memeriksa status operasi menggunakan gcloud container bare-metal operations describe OPERATIONS_ID. Output perintah memberikan status node, misalnya:

  ...
  metrics:
  - intValue: '1'
    metric: NODES_RECONCILING
  - intValue: '2'
    metric: NODES_HEALTHY
  - intValue: '0'
    metric: NODES_FAILED
  - intValue: '0'
    metric: NODES_IN_MAINTENANCE
  - intValue: '3'
    metric: NODES_TOTAL
  stage: HEALTH_CHECK
...

Apa pun alat yang Anda gunakan untuk mengupdate node pool, Anda bisa mendapatkan status node pool saat ini dengan menjalankan perintah describe yang berlaku seperti yang ditunjukkan sebelumnya.

Jika Anda memerlukan informasi selengkapnya tentang cara mendiagnosis cluster, lihat Membuat snapshot untuk mendiagnosis cluster.

Kumpulan alamat load balancer

bmctl

Bagian addressPools berisi kolom untuk menentukan kumpulan load balancing untuk load balancer gabungan MetalLB dan Border Gateway Protocol (BGP). Anda dapat menambahkan kumpulan alamat load balancing lainnya kapan saja, tetapi Anda tidak dapat menghapus kumpulan alamat yang sudah ada. Mulai dari Google Distributed Cloud versi 1.16.0, Anda dapat mengubah nilai untuk addressPools.avoidBuggyIPs dan addressPools.manualAssign kapan saja.

addressPools:
- name: pool1
  addresses:
  - 198.51.100.0-198.51.100.4
  - 198.51.100.240/28
- name: pool2
  addresses:
  - 198.51.100.224/28

gcloud CLI

Anda dapat menambahkan kumpulan alamat load balancing lainnya kapan saja untuk load balancer yang dibundel, tetapi Anda tidak dapat menghapus kumpulan alamat yang ada. Flag yang Anda tentukan di gcloud container bare-metal clusters update untuk menambahkan kumpulan alamat bergantung pada jenis load balancer yang dibundel:

  • MetalLB (layer 2): Gunakan tanda --metal-lb-address-pools.
  • Border Gateway Protocol (BGP): Gunakan tanda --bgp-address-pools.

Nilai untuk tanda memiliki format berikut:

'pool=NAME,avoid-buggy-ips=True|False,manual-assign=True|False,addresses=IP_ADDRESS_RANGE_1;IP_ADDRESS_RANGE_2;...' \

Nilai memiliki segmen yang dimulai dengan kata kunci pool, avoid-buggy-ip, manual-assign, dan addresses. Pisahkan setiap segmen dengan koma.

  • pool: Nama pilihan Anda untuk pool.

  • avoid-buggy-ips: Jika Anda menyetelnya ke True, pengontrol pengelolaan alamat IP (IPAM) tidak akan menetapkan alamat IP yang berakhiran .0 atau .255 ke Layanan. Hal ini menghindari masalah perangkat konsumen yang penuh bug yang secara keliru menghentikan traffic yang dikirim ke alamat IP khusus tersebut. Jika tidak ditentukan, nilai defaultnya adalah False. Mulai dari Google Distributed Cloud versi 1.16.0, Anda dapat mengubah nilai ini di kumpulan alamat yang ada.

  • manual-assign: Jika Anda tidak ingin pengontrol IPAM menetapkan alamat IP dari pool ini ke Layanan secara otomatis, tetapkan ini ke True. Kemudian, developer dapat membuat Layanan berjenis LoadBalancer dan menentukan salah satu alamat dari kumpulan secara manual. Jika tidak ditentukan, manual-assign akan ditetapkan ke False. Mulai dari Google Distributed Cloud versi 1.16.0, Anda dapat mengubah nilai ini di kumpulan alamat yang ada.

  • Dalam daftar addresses: Setiap alamat harus berupa rentang dalam CIDR atau format rentang yang dipisahkan tanda hubung. Untuk menentukan satu alamat IP dalam pool (seperti untuk VIP ingress), gunakan /32 dalam notasi CIDR (misalnya, 192.0.2.1/32).

Perhatikan aturan sintaksis berikut:

  • Mengapit seluruh nilai dalam tanda kutip tunggal.
  • Spasi kosong tidak diizinkan.
  • Pisahkan setiap rentang alamat IP dengan titik koma.

Anda dapat menentukan lebih dari satu instance tanda, seperti yang ditunjukkan dalam contoh berikut:

--metal-lb-address-pools='pool=pool2,avoid-buggy-ips=False,manual-assign=True,addresses=198.51.100.0/30;198.51.100.64-198.51.100.72'
--metal-lb-address-pools='pool=pool3,avoid-buggy-ips=True,manual-assign=True,addresses=203.0.113.0/28'

Untuk mengetahui informasi selengkapnya tentang kumpulan alamat load balancer, lihat loadBalancer.addressPools di Mengonfigurasi load balancing gabungan.

Mencegah penghapusan cluster yang tidak disengaja

bmctl

Jika Anda menambahkan anotasi baremetal.cluster.gke.io/prevent-deletion: "true" ke file konfigurasi cluster, Anda tidak dapat menghapus cluster. Misalnya, menjalankan kubectl delete cluster atau bmctl reset cluster akan menghasilkan error.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: ci-10c3c6f4d9c698e
  namespace: cluster-ci-10c3c6f4d9c698e
  annotations:
    baremetal.cluster.gke.io/prevent-deletion: "true"
spec:
  clusterNetwork:

gcloud CLI

Jika Anda menentukan flag --add-annotations dengan nilai baremetal.cluster.gke.io/prevent-deletion="true", Anda tidak dapat menghapus cluster. Contoh:

  1. Tambahkan anotasi untuk mencegah penghapusan cluster yang tidak disengaja:

    gcloud container bare-metal clusters update abm-user-cluster1a \
        --project=example-project-12345 \
        --location=us-central1 \
        --add-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
    
  2. Coba hapus cluster pengguna:

    gcloud container bare-metal clusters delete abm-user-cluster1a \
        --project=example-project-12345 \
        --location=us-central1 \
        --force \
        --allow-missing
    

    Respons dari perintah ini akan mirip dengan berikut ini:

    ERROR: (gcloud.container.bare-metal.clusters.delete) INVALID_ARGUMENT:
    invalid request: admission webhook "vcluster.kb.io" denied the request:
    annotations[baremetal.cluster.gke.io/prevent-deletion]: Invalid value:
    "true": Annotation "baremetal.cluster.gke.io/prevent-deletion" should be
    removed in order to delete this cluster
    

    Untuk menghapus anotasi, tentukan --remove-annotations=baremetal.cluster.gke.io/prevent-deletion="true" dalam perintah update.

Melewati pemeriksaan awal

Fitur ini hanya tersedia dengan bmctl update.

Nilai default kolom bypassPreflightCheck adalah false. Jika Anda menyetel kolom ini ke true dalam file konfigurasi cluster, pemeriksaan awal internal akan diabaikan saat Anda menerapkan resource ke cluster yang ada.

  apiVersion: baremetal.cluster.gke.io/v1
  kind: Cluster
  metadata:
    name: cluster1
    namespace: cluster-cluster1
    annotations:
      baremetal.cluster.gke.io/private-mode: "true"
  spec:
    bypassPreflightCheck: true

Menambahkan atau menghapus administrator cluster

bmctl

Anda dapat menambahkan atau menghapus akun pengguna atau akun layanan sebagai administrator cluster untuk cluster pengguna dengan menentukan alamat email di bagian clusterSecurity.authorization.clusterAdmin.gcpAccounts file konfigurasi cluster. Akun tersebut diberi peran cluster-admin di cluster, sehingga memberikan akses penuh ke cluster.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  clusterSecurity:
    authorization:
      clusterAdmin:
        gcpAccounts:
        - alex@example.com
        - hao@example.com
        - my-sa@example-project-12345.

Saat memperbarui cluster pengguna untuk menambahkan akun, pastikan untuk menyertakan semua akun dalam daftar (baik akun yang sudah ada maupun akun baru) karena bmctl updateakan mengganti daftar dengan apa yang Anda tentukan dalam file konfigurasi. Untuk menghapus akun, hapus akun tersebut dari file konfigurasi cluster dan jalankan bmctl update.

gcloud CLI

Anda dapat menambahkan atau menghapus akun pengguna atau akun layanan sebagai administrator cluster dengan menentukan alamat email di flag --admin-users. Bendera ini hanya menerima satu alamat email. Untuk menambahkan beberapa pengguna, tentukan satu akun di setiap tanda, misalnya:

gcloud container bare-metal clusters update abm-user-cluster1a \
    --project=example-project-12345 \
    --location=us-central1 \
    --admin-users=alex@example.com \
    --admin-users=hao@example.com
    --admin-users=my-sa@example-project-12345.

Perintah update akan menimpa seluruh daftar pemberian. Tentukan semua pengguna lama dan baru yang ingin Anda jadikan administrator cluster.

Menetapkan pengguna login

Anda dapat menentukan nama pengguna non-root yang ingin digunakan untuk akses kemampuan sudo tanpa sandi ke mesin node di cluster Anda. Kunci SSH Anda, sshPrivateKeyPath, harus berfungsi untuk pengguna yang ditentukan. Operasi pembuatan dan update cluster memeriksa bahwa mesin node dapat diakses dengan pengguna dan kunci SSH yang ditentukan.

bmctl

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/private-mode: "true"
spec:
  nodeAccess:
    loginUser: abm

gcloud CLI

Anda menentukan pengguna yang ingin digunakan untuk mengakses mesin node di tanda --login-user, misalnya:

gcloud container bare-metal clusters update abm-user-cluster1a \
    --project=example-project-12345 \
    --location=us-central1 \
    --login-user=abm

Untuk mengaktifkan akses sudo tanpa sandi bagi pengguna, ikuti langkah-langkah berikut di setiap mesin node cluster:

  1. Gunakan sudo visudo untuk membuka file sudoers untuk diedit:

    sudo visudo -f /etc/sudoers
    

    Perintah visudo mengunci file sudoers untuk mencegah pengeditan serentak dan memvalidasi sintaksis file saat menyimpan.

  2. Untuk pengguna login Anda, tambahkan entri ke file sudoers seperti berikut:

    USERNAME ALL=(ALL) NOPASSWD: ALL
    
  3. Tutup dan simpan file.

  4. Untuk menjalankan perintah dengan hak istimewa pengguna login Anda, jalankan perintah berikut:

    su - USERNAME
    
  5. Untuk memverifikasi bahwa sandi tidak diperlukan agar pengguna login Anda dapat menjalankan perintah sudo, jalankan perintah sudo berikut:

    sudo ip a
    

Jaringan lanjutan

Anda mengonfigurasi fitur jaringan lanjutan di berbagai resource kustom setelah cluster dibuat. Untuk menggunakan resource kustom dan fitur jaringan terkait, Anda harus mengaktifkan jaringan lanjutan saat membuat cluster.

bmctl

Tetapkan clusterNetwork.advancedNetworking ke truedalam konfigurasi cluster saat Anda membuat cluster:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  clusterNetwork:
    ...
    advancedNetworking: true
    ...

gcloud CLI

Sertakan flag --enable-advanced-networking dalam perintah gcloud container bare-metal clusters create saat Anda membuat cluster.

Setelah cluster dibuat dengan mengaktifkan jaringan tingkat lanjut, Anda dapat mengonfigurasi resource kustom yang dijelaskan di bagian ini menggunakan kubectl apply.

NetworkGatewayGroup

Resource kustom NetworkGatewayGroup digunakan untuk menyediakan alamat IP mengambang untuk fitur jaringan lanjutan, seperti gateway NAT keluar atau fitur load balancing gabungan dengan BGP.

apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
  name: default
  namespace: cluster-bm
spec:
  floatingIPs:
  - 10.0.1.100
  - 10.0.2.100

Load balancing BGP

Anda mengonfigurasi load balancing Border Gateway Protocol (BGP) di resource cluster dan resource kustom lainnya. Perintah gcloud container bare-metal clusters create dan update mendukung konfigurasi BGP di resource cluster, tetapi tidak di resource kustom.

Saat Anda mengonfigurasi load balancer gabungan dengan BGP, load balancing bidang data secara default menggunakan peer eksternal yang sama yang ditentukan untuk peering bidang kontrol. Atau, Anda dapat mengonfigurasi load balancing bidang data secara terpisah, menggunakan resource kustom BGPLoadBalancer dan resource kustom BGPPeer. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi load balancer gabungan dengan BGP.

BGPLoadBalancer

apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
  name: default
  namespace: cluster-bm
spec:
  peerSelector:
    cluster.baremetal.gke.io/default-peer: "true"

BGPPeer

apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer1
  namespace: cluster-bm
  labels:
    cluster.baremetal.gke.io/default-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.3.254
  sessions: 2

Meningkatkan rentang jaringan layanan

Untuk membuat lebih banyak layanan daripada batas awal, Anda dapat mengurangi mask CIDR layanan IPv4 untuk meningkatkan jaringan layanan cluster Anda. Mengurangi masker (nilai setelah "/") akan menghasilkan rentang jaringan yang lebih besar. Anda hanya dapat meningkatkan rentang CIDR layanan IPv4. Rentang jaringan tidak dapat dikurangi, yang berarti mask (nilai setelah "/") tidak dapat ditingkatkan.

bmctl

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  ...
  clusterNetwork:
    services:
      cidrBlocks:
        - 192.0.2.0/14
  ...

gcloud CLI

Untuk memperluas rentang CIDR layanan IPv4 di cluster pengguna, tentukan rentang baru di flag --island-mode-service-address-cidr-blocks.

gcloud container bare-metal clusters update cluster1 \
    --project=example-project-12345 \
    --location=us-central1 \
    --island-mode-service-address-cidr-blocks=192.0.2.0/14

Mengonfigurasi setelan penarikan image kubelet

Kubelet berjalan di setiap node cluster Anda. Kubelet bertanggung jawab untuk memantau container di node dan memastikan container tersebut berfungsi dengan baik. Jika diperlukan, kubelet akan mengkueri dan mengambil image dari Artifact Registry.

Memperbarui konfigurasi kubelet secara manual dan menyinkronkannya di semua node cluster Anda bisa menjadi tantangan. Lebih buruk lagi, perubahan konfigurasi kubelet manual pada node Anda akan hilang saat Anda mengupgrade cluster.

Untuk membantu membuat update yang disinkronkan lebih mudah dan persisten, Google Distributed Cloud memungkinkan Anda menentukan beberapa setelan kubelet untuk setiap node pool cluster: node bidang kontrol, node load balancer, dan worker node. Setelan ini berlaku untuk semua node dalam pool tertentu dan tetap ada selama upgrade cluster. Kolom untuk setelan ini dapat diubah, sehingga Anda dapat memperbaruinya kapan saja, bukan hanya selama pembuatan cluster.

bmctl

Kolom yang didukung berikut mengontrol operasi penarikan Artifact Registry untuk kubelet:

  • registryBurst (default: 10)
  • registryPullQPS (default: 5)
  • serializeImagePulls (default: true)

Untuk mengetahui informasi selengkapnya tentang setiap kolom konfigurasi kubelet, lihat Referensi kolom konfigurasi cluster.

Anda dapat menentukan kolom ini di bagian kubeletConfig spesifikasi Cluster dan spesifikasi NodePool untuk kumpulan node berikut:

Contoh berikut menunjukkan kolom yang ditambahkan dengan nilai default di file konfigurasi cluster. Perhatikan bahwa anotasi preview.baremetal.cluster.gke.io/custom-kubelet: "enable" harus ada.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    preview.baremetal.cluster.gke.io/custom-kubelet: "enable"
spec:
  ...
  controlPlane:
    nodePoolSpec:
      kubeletConfig:
        registryBurst: 10
        registryPullQPS: 5
        serializeImagePulls: true
  ...
  loadBalancer:
    nodePoolSpec:
      kubeletConfig:
        registryBurst: 10
        registryPullQPS: 5
        serializeImagePulls: true
  ...
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: node-pool-new
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  ...
  kubeletConfig:
    registryBurst: 10
    registryPullQPS: 5
    serializeImagePulls: true

Dalam setiap kasus, setelan berlaku untuk semua node dalam kumpulan.

gcloud CLI

Flag berikut mengontrol operasi penarikan Artifact Registry untuk kubelet:

Cara menggunakan

Berikut beberapa pertimbangan untuk menyesuaikan penarikan gambar:

  • Karena image ditarik secara berurutan secara default, penarikan image yang membutuhkan waktu lama dapat menunda semua penarikan image lain yang dijadwalkan di node. Penarikan image yang tertunda dapat memblokir proses upgrade (terutama saat image Google Distributed Cloud baru perlu di-deploy di node). Jika Anda terpengaruh oleh penarikan gambar yang tertunda, Anda dapat menonaktifkan penarikan gambar serial untuk mengizinkan penarikan gambar paralel.

  • Jika Anda mengalami error pembatasan penarikan image, seperti pull QPS exceeded, Anda dapat meningkatkan *-registry-pull-qps dan *-registry-burst untuk meningkatkan throughput penarikan image. Kedua kolom ini menyesuaikan laju penarikan dan ukuran antrean, serta dapat membantu mengatasi masalah terkait pembatasan lainnya. Nilai negatif tidak diizinkan.

Penyesuaian Keepalived

Mulai dari versi 1.32, Google Distributed Cloud menyediakan beberapa penyesuaian konfigurasi Keepalived. Dengan load balancing gabungan, load balancer bidang kontrol melayani alamat IP virtual (VIP) bidang kontrol. Google Distributed Cloud menjalankan Keepalived dan HAProxy sebagai Pod statis Kubernetes di node load balancer untuk mengumumkan VIP bidang kontrol. Keepalived menggunakan Virtual Router Redundancy Protocol (VRRP) pada node load balancer untuk ketersediaan tinggi.

Cluster versi 1.32 dan yang lebih baru memiliki penyesuaian Keepalived berikut:

  • Untuk bidang kontrol ketersediaan tinggi, Google Distributed Cloud secara otomatis mengonfigurasi konfigurasi VRRP Keepalived untuk membuat perilaku failover deterministik dan mencegah penyisipan respons ARP dengan alamat MAC yang berbeda:

    • Setiap instance Keepalived dikonfigurasi secara otomatis dengan nilai priority yang berbeda di router VRRP.

    • Setiap instance Keepalived dikonfigurasi secara otomatis dengan nopreempt untuk menghindari pemilihan saat instance non-master dimulai ulang.

  • Google Distributed Cloud memungkinkan Anda menentukan jumlah pesan ARP (GARP) gratis yang akan dikirim sekaligus setelah node bidang kontrol bertransisi ke peran server utama. Untuk mengubah jumlah pesan GARP yang akan dikirim, tambahkan kolom controlPlane.loadBalancer.keepalivedVRRPGARPMasterRepeat ke file konfigurasi cluster, tetapkan ke nilai baru, dan perbarui cluster Anda. Nilai ini dipetakan ke setelan vrrp_garp_master_repeat untuk Keepalived. Nilai defaultnya adalah 5.

    Contoh berikut menunjukkan cara menentukan keepalivedVRRPGARPMasterRepeat dalam file konfigurasi cluster:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: hybrid-ha-lb
      namespace: cluster-hybrid-ha-lb
    spec:
      type: hybrid
      profile: default
      anthosBareMetalVersion: 1.33
      gkeConnect:
        projectID: project-fleet
      controlPlane:
        loadBalancer:
          keepalivedVRRPGARPMasterRepeat: 1
        nodePoolSpec:
          nodes:
          - address: 10.200.0.2
          - address: 10.200.0.3
          - address: 10.200.0.4
      ...
    

Menginstal atau meng-uninstal NVIDIA GPU Operator yang dibundel

NVIDIA GPU Operator memungkinkan Anda menjalankan workload terkait GPU di cluster. Mulai dari Google Distributed Cloud versi 1.33.0, cluster dibundel dengan stack NVIDIA GPU Operator lengkap untuk menyediakan solusi terkelola dalam menangani komponen software NVIDIA yang diperlukan untuk menyediakan GPU di node pekerja cluster Anda.

Prasyarat

Sebelum menginstal NVIDIA GPU Operator yang dibundel, pastikan lingkungan Anda memenuhi persyaratan berikut:

  • Cluster operasional: Anda memiliki cluster bare metal fungsional yang dibuat dengan Google Distributed Cloud.

  • GPU NVIDIA: GPU NVIDIA diinstal pada node pekerja cluster Anda. Bagian berikut untuk menginstal NVIDIA GPU Operator mencakup langkah-langkah untuk memverifikasi bahwa GPU diinstal dengan benar dan dikenali oleh sistem operasi Anda.

  • Versi driver NVIDIA yang kompatibel: Versi driver NVIDIA yang Anda gunakan harus kompatibel dengan GPU, sistem operasi, dan versi CUDA yang digunakan aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Informasi versi.

    Anda memiliki opsi penginstalan driver NVIDIA berikut:

    Driver GPU NVIDIA harus diinstal dan siap sebelum Anda mengaktifkan NVIDIA GPU Operator yang dibundel.

Informasi versi

Bagian ini berisi informasi versi software untuk NVIDIA GPU Operator yang disertakan.

Versi komponen software

Versi rilis Google Distributed Cloud 1.33 menggabungkan NVIDIA GPU Operator versi 25.3.1. Di Google Distributed Cloud, paket berisi image berikut:

  • NVIDIA Container Toolkit versi v1.17.8
  • NVIDIA DCGM Exporter v3.3.9-3.6.1
  • Plugin Perangkat Kubernetes NVIDIA v0.17.1
  • Node Feature Discovery v0.17.2

Versi image yang disertakan dengan rilis Google Distributed Cloud 1.33 mungkin tidak sama persis dengan versi komponen software yang tercantum dalam catatan rilis 25.3.1.

Kompatibilitas driver

Lihat Dukungan Platform untuk versi 25.3.1 di Hub Dokumen NVIDIA untuk mengetahui informasi kompatibilitas driver.

Memperbarui NVIDIA GPU Operator yang dibundel

Jika Anda telah menginstal NVIDIA GPU Operator di cluster, saat Anda mengupgrade ke versi minor baru, versi terbaru NVIDIA GPU Operator yang dibundel akan diinstal.

Menginstal operator yang dibundel

Meskipun Operator GPU NVIDIA yang dibundel masih dalam Pratinjau, Anda dapat menginstalnya menggunakan bmctl update untuk menambahkan anotasi berikut ke cluster yang memiliki node GPU:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    preview.baremetal.cluster.gke.io/nvidia-gpu-operator: "enable"
spec:
  ...

Stack NVIDIA GPU Operator diinstal ke cluster saat anotasi diterapkan.

Meng-uninstal operator paket

Selama Operator GPU NVIDIA yang dibundel dalam Pratinjau, Anda dapat menghapusnya dengan menggunakan bmctl update untuk menghapus anotasi berikut dari cluster yang memiliki node GPU:

preview.baremetal.cluster.gke.io/nvidia-gpu-operator: "enable"

Semua komponen stack NVIDIA GPU Operator dihapus dari cluster saat anotasi dihapus.

Mengaktifkan alokasi resource dinamis

Alokasi resource dinamis adalah Kubernetes API yang memungkinkan Anda meminta dan membagikan resource generik, seperti GPU, di antara Pod dan container. Driver pihak ketiga mengelola resource ini. Kemampuan ini membantu Anda menjalankan workload AI dengan mengalokasikan resource GPU secara dinamis dan akurat dalam cluster bare metal, sehingga meningkatkan pemanfaatan resource dan performa untuk workload yang berat.

Alokasi resource dinamis tersedia dalam pratinjau untuk cluster versi 1.33 dan yang lebih baru. Petunjuk berikut menjelaskan cara mengonfigurasi cluster Anda untuk menggunakan alokasi resource dinamis. Setelah diaktifkan, Anda dapat mengonfigurasi workload GPU untuk menggunakan alokasi resource dinamis.

Konfigurasi cluster Anda untuk mengaktifkan alokasi resource dinamis:

  1. Edit file konfigurasi cluster Anda untuk menyertakan anotasi pratinjau preview.baremetal.cluster.gke.io/dynamic-resource-allocation: "enable" dan tambahkan DynamicResourceAllocation: true di bagian featureGates dalam bagian kubeletConfig:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: dra
      namespace: cluster-dra
      annotations:
        preview.baremetal.cluster.gke.io/dynamic-resource-allocation: "enable"
    spec:
      controlPlane:
        nodePoolSpec:
          kubeletConfig:
            featureGates:
              DynamicResourceAllocation: true
    # ... other cluster configuration
    
  2. Perbarui cluster dengan menjalankan perintah bmctl update:

    bmctl update cluster -c CLUSTER_NAME \
        --kubeconfig=ADMIN_KUBECONFIG
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster pengguna yang Anda perbarui.

    • ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin.

    Setelah Anda menerapkan konfigurasi ini, kolom READY untuk mesin bare metal Anda mungkin beralih antara True dan False beberapa kali. Tunggu hingga kolom READY stabil di True sebelum melanjutkan.

  3. Untuk mengaktifkan gerbang fitur DynamicResourceAllocation di node pool yang memiliki node dengan GPU, tetapkan DynamicResourceAllocation ke true di bagian featureGates dari bagian kubeletConfig pada spesifikasi NodePool:

    Untuk mengetahui petunjuk cara menambahkan dan mengupdate node pool, lihat Mengelola node pool di cluster.

    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: np
      namespace: cluster-dra
    spec:
      clusterName: dra
      kubeletConfig:
        featureGates:
          DynamicResourceAllocation: true
      nodes:
    # ... other node pool configuration
    

    Setelah Anda menambahkan atau memperbarui node pool, tunggu hingga semua mesin bare metal di node pool mencapai status Ready.

  4. Untuk memeriksa status mesin bare metal cluster Anda, gunakan perintah berikut:

    kubectl get baremetalmachines --kubeconfig ADMIN_KUBECONFIG -A
    

    Setelah mesin bare metal siap, responsnya akan terlihat mirip dengan contoh respons berikut:

    NAMESPACE          NAME         CLUSTER    READY   INSTANCEID               MACHINE      ABM VERSION        DESIRED ABM VERSION
    cluster-admin      10.200.0.2   dra        true    baremetal://10.200.0.2   10.200.0.2    1.33.0-gke.793   1.33.0-gke.793
    cluster-user-dra   10.200.0.6   user-dra   true    baremetal://10.200.0.6   10.200.0.6    1.33.0-gke.793   1.33.0-gke.793
    cluster-user-dra   10.200.0.7   user-dra   true    baremetal://10.200.0.7   10.200.0.7    1.33.0-gke.793   1.33.0-gke.793
    cluster-user-dra   10.200.0.8   user-dra   true    baremetal://10.200.0.8   10.200.0.8    1.33.0-gke.793   1.33.0-gke.793
    

Batasan

Operator GPU NVIDIA yang dibundel memiliki batasan berikut:

  • Operator GPU NVIDIA yang dibundel hanya mendukung komponen software NVIDIA berikut:

    • NVIDIA Container Toolkit
    • NVIDIA DCGM Exporter
    • Plugin Perangkat Kubernetes NVIDIA
    • NVIDIA MIG Manager untuk Kubernetes.
  • Selama Pratinjau, konfigurasi NVIDIA GPU Operator sudah ditetapkan. Jika Anda mencoba menyesuaikan setelan apa pun, setelan tersebut akan disesuaikan kembali ke setelan penginstalan asli.

  • Operator GPU NVIDIA yang dibundel tidak dapat digunakan untuk menginstal driver GPU NVIDIA.

  • Selama Pratinjau, fitur ini menggunakan grup API resource.k8s.io/v1beta1, yang berbeda dengan grup API Kubernetes open source untuk fitur ini, resource.k8s.io/v1. Grup API open source v1 menyediakan lebih banyak fitur dan stabilitas yang lebih baik daripada grup API v1beta1.

Langkah berikutnya

Dokumentasi referensi