Mengupdate cluster

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

  • Menambahkan, menghapus, atau mengganti node.
  • Tambahkan atau hapus anotasi di cluster.
  • Ubah nilai kolom yang dapat berubah di resource cluster dan kumpulan node.
  • Mengubah resource kustom lainnya.

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

  • Banyak aspek konfigurasi cluster Anda yang tidak dapat diubah dan tidak dapat diperbarui setelah Anda membuat cluster. Untuk mengetahui daftar lengkap kolom yang dapat diubah dan tidak dapat diubah, lihat Referensi kolom konfigurasi cluster. {i>Field reference <i}adalah tabel yang dapat diurutkan. Klik judul kolom untuk mengubah tata urutan. Klik nama kolom untuk melihat deskripsinya.

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

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

Cara mengupdate cluster

Biasanya, Anda perlu 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. Update 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 flag untuk konfigurasi yang ingin Anda ubah.

  2. Jalankan perintah update yang berlaku:

Terraform

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

  2. Perbarui konfigurasi dengan menjalankan perintah terraform apply.

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

Menambahkan atau menghapus node dalam cluster

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

Ada tiga jenis node pool di GKE pada Bare Metal: bidang kontrol, load balancing, dan kumpulan node pekerja. Bagian berikut menjelaskan cara menambahkan atau menghapus node dari setiap jenis kumpulan node.

bmctl

Anda menambah atau menghapus node dari kumpulan node dengan menambah atau menghapus alamat IP node di bagian tertentu dari file konfigurasi cluster. Daftar berikut menunjukkan bagian yang perlu diedit untuk kumpulan node tertentu:

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

Contoh: menghapus node pekerja

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

---
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 akan Anda hapus menjalankan pod yang penting, tempatkan node terlebih dahulu ke dalam mode pemeliharaan.

    Anda dapat memantau proses pengosongan node untuk worker node 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 untuk menentukan alamat IP bergantung pada jenis kumpulan node yang ingin Anda update:

  • Kumpulan node pekerja: Jalankan gcloud container bare-metal node-pools update dan tentukan alamat IP dalam flag --node-configs 'node-ip=IP_ADDRESS'.

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

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

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

Tanda yang Anda gunakan untuk menentukan alamat IP hanya menerima satu node-ip. Anda menyertakan flag untuk setiap alamat IP di kumpulan node.

Perintah update akan mengganti semua alamat IP dengan alamat IP yang Anda tentukan. Untuk menambahkan node, sertakan alamat IP dari 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 kumpulan node menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna bagi Anda juga disertakan dalam langkah-langkah berikut.

  1. (Opsional) Jika node yang akan Anda hapus menjalankan pod yang penting, tempatkan node terlebih dahulu ke dalam mode pemeliharaan.

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

  2. Jalankan perintah list untuk menampilkan semua kumpulan node 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 menampilkan semua alamat IP dalam kumpulan node:

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

    Contoh output berikut dipotong agar mudah dibaca:

    annotations:
      ...
      baremetal.cluster.gke.io/version: 1.28
    ...
    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 kumpulan node yang sepenuhnya memenuhi syarat. Saat menentukan nama kumpulan node dalam perintah, Anda dapat menentukan nama yang sepenuhnya memenuhi syarat, atau nama kumpulan node, misalnya, node-pool-1, beserta tanda --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 akan mengganti 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 sesering mungkin untuk memeriksa statusnya.

Jika penghapusan node gagal, Anda dapat memaksa penghapusannya dari cluster. Untuk mengetahui detailnya, lihat Menghapus otomatis node yang rusak.

Mengganti node bidang kontrol HA

bmctl

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

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

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

Contoh: mengganti node bidang kontrol HA

Berikut ini contoh file konfigurasi cluster yang menampilkan tiga node bidang kontrol dalam 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 di 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 admin atau cluster 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 dieksekusi, 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 Memverifikasi update Anda dalam dokumen ini. Setelah kumpulan node dan node berada dalam status siap, Anda dapat melanjutkan ke langkah berikutnya.

  4. Tambahkan node bidang kontrol baru ke kumpulan node 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 bidang kontrol ketersediaan tinggi (HA) di cluster admin dan pengguna.

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

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

    • Cluster 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 bidang kontrol dari cluster menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna bagi Anda juga disertakan dalam langkah-langkah berikut.

  1. Jalankan perintah list untuk menampilkan semua cluster pengguna dalam project Google Cloud:

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

    Jika Anda menetapkan --location=-, artinya Anda mencantumkan semua cluster di semua region. Jika Anda perlu menentukan cakupan dalam daftar, tetapkan --location ke region tertentu.

    Outputnya mirip dengan hal berikut ini:

    NAME                 LOCATION      VERSION   ADMIN_CLUSTER        STATE
    abm-user-cluster1a   us-central1   1.28      abm-admin-cluster1   RUNNING
    abm-user-cluster1b   europe-west1  1.28      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
    

    Output contoh akan dipotong agar 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 sesering mungkin 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'
    

Verifikasi pembaruan Anda

kubectl

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

Misalnya, perintah berikut menunjukkan status kumpulan node dalam 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 ini 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 terkini dari kumpulan node 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 yang dipaketkan untuk MetalLB dan Border Gateway Protocol (BGP). Anda dapat menambahkan lebih banyak kumpulan alamat load balancing kapan saja, tetapi Anda tidak dapat menghapus kumpulan alamat yang sudah ada. Mulai GKE pada Bare Metal versi 1.16.0, Anda dapat mengubah nilai 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 lebih banyak kumpulan alamat load balancing kapan saja untuk load balancer yang dipaketkan, tetapi Anda tidak dapat menghapus kumpulan alamat yang sudah ada. Tanda yang Anda tentukan di gcloud container bare-metal clusters update untuk menambahkan kumpulan alamat bergantung pada jenis load balancer yang dipaketkan:

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

Nilai untuk flag 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 menggunakan koma.

  • pool: Nama kolam renang pilihan Anda.

  • avoid-buggy-ips: Jika Anda menetapkannya ke True, pengontrol pengelolaan alamat IP (IPAM) tidak akan menetapkan alamat IP yang diakhiri dengan .0 atau .255 ke Layanan. Hal ini untuk menghindari masalah perangkat konsumen yang berisi bug menurunkan traffic yang dikirim ke alamat IP khusus tersebut secara keliru. Jika tidak ditentukan, setelan defaultnya adalah False. Mulai GKE pada Bare Metal 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 secara otomatis dari kumpulan ini ke Layanan, tetapkan ini ke True. Kemudian, developer dapat membuat Layanan jenis LoadBalancer dan secara manual menentukan salah satu alamat dari kumpulan. Jika tidak ditentukan, manual-assign akan disetel ke False. Mulai GKE pada Bare Metal versi 1.16.0, Anda dapat mengubah nilai ini di kumpulan alamat yang ada.

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

Perhatikan aturan sintaksis berikut:

  • Letakkan 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 flag, seperti yang ditunjukkan pada 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 informasi selengkapnya tentang kumpulan alamat load balancer, lihat loadBalancer.addressPools di Mengonfigurasi load balancing yang dipaketkan.

Mencegah penghapusan cluster secara tidak sengaja

bmctl

Jika menambahkan anotasi baremetal.cluster.gke.io/prevent-deletion: "true" ke file konfigurasi cluster, Anda tidak dapat menghapus cluster tersebut. 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 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 secara tidak sengaja:

    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 tersebut serupa 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.

Abaikan pemeriksaan preflight

Fitur ini hanya tersedia dengan bmctl update.

Nilai default kolom bypassPreflightCheck adalah false. Jika Anda menetapkan kolom ini ke true dalam file konfigurasi cluster, pemeriksaan preflight 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 pengguna atau akun layanan sebagai administrator cluster untuk cluster pengguna dengan menentukan alamat email di bagian clusterSecurity.authorization.clusterAdmin.gcpAccounts file konfigurasi cluster tersebut. Akun tersebut diberi peran admin cluster di cluster, yang 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.iam.gserviceaccount.com

Saat memperbarui cluster pengguna untuk menambahkan akun, pastikan untuk menyertakan semua akun dalam daftar (akun yang sudah ada dan baru) karena bmctl update akan menimpa daftar dengan apa yang Anda tetapkan di file konfigurasi. Untuk menghapus akun, hapus akun dari file konfigurasi cluster dan jalankan bmctl update.

gcloud CLI

Anda dapat menambahkan atau menghapus pengguna atau akun layanan sebagai administrator cluster dengan menentukan alamat email di flag --admin-users. Bendera hanya menerima satu alamat email. Untuk menambahkan beberapa pengguna, tentukan satu akun di setiap flag, 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.iam.gserviceaccount.com

Perintah update menimpa seluruh daftar pemberian. Tentukan semua pengguna yang sudah ada dan pengguna baru yang ingin dijadikan sebagai administrator cluster.

Menetapkan pengguna yang 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 pembaruan cluster memastikan 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 dalam flag --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 pada setiap mesin node cluster:

  1. Gunakan sudo visudo untuk membuka file sudoers guna mengedit:

    sudo visudo -f /etc/sudoers
    

    Perintah visudo mengunci file sudoers untuk mencegah pengeditan secara bersamaan dan memvalidasi sintaksis file saat disimpan.

  2. Bagi pengguna yang login, 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 pengguna yang login tidak memerlukan sandi untuk menjalankan perintah sudo, jalankan perintah sudo berikut:

    sudo ip a
    

Jaringan lanjutan

Anda dapat 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 true di 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 jaringan lanjutan yang diaktifkan, 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 paket 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 mendukung resource kustom.

Saat Anda mengonfigurasi load balancer yang dipaketkan dengan BGP, load balancing bidang data akan menggunakan peer eksternal yang sama dengan yang ditentukan untuk peering bidang kontrol secara default. 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 yang dipaketkan 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

Tingkatkan rentang jaringan layanan

Untuk membuat lebih banyak layanan daripada batas awal, Anda dapat mengurangi CIDR layanan IPv4 untuk meningkatkan jaringan layanan cluster Anda. Mengurangi mask (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 meningkatkan 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 pull image kubelet

Kubelet berjalan pada setiap node cluster Anda. Kubelet bertanggung jawab untuk memantau container pada node dan memastikan container tersebut responsif. Jika diperlukan, kubelet akan mengkueri dan mengambil image dari Container Registry.

Mengupdate konfigurasi kubelet secara manual dan menjaganya tetap sinkron di semua node cluster Anda bukanlah hal yang mudah. Lebih parah lagi, perubahan konfigurasi kubelet manual pada node Anda akan hilang saat Anda mengupgrade cluster.

Agar update yang disinkronkan lebih mudah dan persisten, GKE di Bare Metal memungkinkan Anda menentukan beberapa setelan kubelet untuk setiap kumpulan node cluster: node bidang kontrol, node load balancer, dan node pekerja. Setelan ini berlaku untuk semua node dalam kumpulan tertentu dan tetap ada selama upgrade cluster. Kolom untuk setelan ini dapat berubah, sehingga Anda dapat memperbaruinya kapan saja, bukan hanya selama pembuatan cluster.

bmctl

Kolom yang didukung berikut mengontrol operasi pull Container Registry untuk kubelet:

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

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

Anda dapat menentukan kolom ini di bagian kubeletConfig pada 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" diperlukan.

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 tersebut.

gcloud CLI

Flag berikut mengontrol operasi pull Container Registry untuk kubelet:

Cara menggunakan

Berikut beberapa pertimbangan untuk menyesuaikan pull gambar:

  • Karena gambar ditarik secara berurutan secara default, pull gambar yang memerlukan waktu lama dapat menunda semua penarikan gambar lain yang dijadwalkan pada sebuah node. Pengambilan image yang tertunda dapat memblokir proses upgrade (terutama saat image GKE baru pada Bare Metal perlu di-deploy pada sebuah node). Jika terpengaruh oleh penundaan penarikan gambar, Anda dapat menonaktifkan penarikan gambar serialisasi untuk memungkinkan penarikan gambar paralel.

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

Dokumentasi referensi