Mengupdate cluster

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

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

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

  • Banyak aspek konfigurasi cluster Anda yang tidak dapat diubah dan tidak dapat diperbarui setelah Anda membuat cluster. Untuk daftar lengkap tentang yang tidak dapat diubah, lihat Referensi kolom konfigurasi cluster. Referensi kolom 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 admin dan pengguna klaster. Anda harus menggunakan bmctl untuk memperbarui jenis cluster lainnya.

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

Cara mengupdate cluster

Biasanya, Anda dapat melakukan urutan tindakan berikut ini untuk mengupdate cluster:

bmctl

  1. Ubah nilai kolom yang berlaku di 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 memperbarui.
    • KUBECONFIG: untuk admin, hybrid, atau mandiri ke cluster, masukkan jalur ke file kubeconfig cluster tersebut. Untuk pengguna cluster, 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 di Terraform konfigurasi file yang Anda gunakan untuk membuat cluster atau node pool. Lihat dokumentasi referensi Terraform untuk mengetahui deskripsi kolom yang mendetail:

  2. Update konfigurasi dengan menjalankan perintah terraform apply.

Bagian berikut menguraikan beberapa contoh umum untuk memperbarui .

Menambahkan atau menghapus node dalam cluster

Kumpulan node adalah kumpulan node di dalam cluster yang memiliki konfigurasi yang sama. Ingatlah bahwa node selalu milik kumpulan node. Untuk menambahkan node baru ke cluster, Anda perlu untuk menambahkannya ke kumpulan node tertentu. Menghapus node dari kumpulan node menghapus node dari cluster sepenuhnya.

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

bmctl

Anda dapat menambahkan atau menghapus node dari kumpulan node dengan menambah atau menghapus alamat IP dari node di bagian tertentu dari file konfigurasi cluster. Tujuan daftar berikut menampilkan bagian yang akan diedit untuk kumpulan node tertentu:

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

Contoh: menghapus node pekerja

Berikut contoh file konfigurasi cluster yang menunjukkan spesifikasi dari 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 Anda hapus menjalankan pod penting, setel node terlebih dahulu ke dalam mode pemeliharaan.

    Anda dapat memantau proses pengosongan node untuk worker node dengan melihat Kolom status.nodesDrained dan status.nodesDraining di Resource NodePool.

  2. Edit file konfigurasi cluster untuk menghapus entri alamat IP untuk {i>node<i}.

  3. Update cluster:

    bmctl update cluster1 \
        --kubeconfig=ADMIN_KUBECONFIG
    

gcloud CLI

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

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

  • Mengontrol kumpulan node bidang di cluster admin: Jalankan gcloud container bare-metal admin-clusters update dan tentukan IP alamat dalam bendera --control-plane-node-configs 'node-ip=IP_ADDRESS'.

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

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

Tanda tempat Anda menentukan alamat IP hanya menerima satu node-ip. Anda menyertakan penanda untuk setiap alamat IP di {i>node pool<i}.

Perintah update mengganti semua alamat IP dengan alamat IP yang yang Anda tentukan. Untuk menambahkan node, sertakan alamat IP yang ada node dan alamat IP node baru di perintah update. Demikian pula, Anda menghapus {i>node<i} dengan hanya menyertakan alamat IP dari {i>node<i} yang Anda Anda ingin pertahankan.

Contoh: menghapus node pekerja

Bagian ini menampilkan cara menghapus node pekerja dari kumpulan node menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna juga tercakup dalam langkah-langkah berikut.

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

    Anda dapat memantau proses pengosongan node untuk worker node dengan melihat Kolom status.nodesDrained dan status.nodesDraining di Resource NodePool.

  2. Jalankan perintah list untuk menampilkan semua kumpulan node di 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 di 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 terpotong agar mudah dibaca:

    annotations:
      ...
      baremetal.cluster.gke.io/version: 1.30
    ...
    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 --cluster, --project, dan Tanda --location.

    • Bagian nodeConfigs berisi dua kolom nodeIp dengan IP untuk setiap 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 mengganti semua alamat IP dengan alamat IP yang 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 tersebut sesering mungkin untuk memeriksa statusnya.

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

Ganti node bidang kontrol HA

bmctl

Anda dapat menggunakan bmctl untuk mengganti node bidang kontrol 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. Update cluster.
  3. Periksa status node di cluster.
  4. Tambahkan alamat IP node baru ke file konfigurasi cluster yang sama.
  5. Update cluster.

Contoh: mengganti node bidang kontrol HA

Berikut contoh file konfigurasi cluster yang menunjukkan tiga bidang kontrol node 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 spec.controlPlane.nodePoolSpec.nodes , lakukan langkah-langkah berikut:

  1. Hapus node dengan menghapus entri alamat IP-nya di cluster file konfigurasi Anda. 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. Perbarui cluster dengan menjalankan perintah berikut:

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

    Buat perubahan berikut:

    • Ganti CLUSTER_NAME dengan nama cluster yang Anda ingin memperbarui.
    • Jika cluster adalah cluster yang dikelola sendiri (seperti admin atau mandiri cluster), ganti KUBECONFIG dengan jalur ke cluster {i>kubeconfig<i}. Jika cluster tersebut adalah cluster pengguna, seperti dalam misalnya, ganti KUBECONFIG dengan jalur ke admin file kubeconfig cluster.
  3. Setelah perintah bmctl update berhasil dieksekusi, diperlukan beberapa yang diperlukan 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 pembaruan dokumen ini. Setelah kumpulan node dan node 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 spec.controlPlane.nodePoolSpec.nodes dari 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. Perbarui cluster dengan menjalankan perintah berikut:

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

gcloud CLI

Anda dapat menggunakan gcloud CLI untuk menggantikan ketersediaan tinggi (HA) bidang kontrol 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:

    • 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 juga tercakup 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=-
    

    Saat Anda menetapkan --location=-, itu berarti membuat daftar semua cluster dalam semua region. Jika Anda perlu mempersempit daftar, tetapkan --location ke wilayah tertentu.

    Outputnya mirip dengan hal berikut ini:

    NAME                 LOCATION      VERSION   ADMIN_CLUSTER        STATE
    abm-user-cluster1a   us-central1   1.30      abm-admin-cluster1   RUNNING
    abm-user-cluster1b   europe-west1  1.30      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 terpotong 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 IP alamat 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 tersebut 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'
    

Memverifikasi pembaruan Anda

kubectl

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

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

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

Sistem 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 bahwa 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 periksa status operasinya menggunakan gcloud container bare-metal operations describe OPERATIONS_ID. Output dari perintah tersebut akan 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 dapat memperoleh status kumpulan node dengan menjalankan perintah describe yang berlaku seperti yang ditunjukkan seperti yang telah dibahas sebelumnya.

Jika Anda memerlukan informasi lebih lanjut tentang cara mendiagnosis cluster, lihat Buat snapshot untuk mendiagnosis cluster.

Kumpulan alamat load balancer

Bmctl

addressPools berisi kolom untuk menentukan kumpulan load balancing untuk MetalLB dan paket load balancer yang dipaketkan untuk Border Gateway Protocol (BGP). Anda dapat menambahkan lebih banyak kumpulan alamat load balancing kapan saja, tetapi Anda tidak dapat menghapus pada kumpulan alamat IP. Dimulai dengan Google Distributed Cloud versi 1.16.0, Anda dapat ubah 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 lebih banyak kumpulan alamat load balancing kapan saja untuk paket load balancer Google Cloud, tetapi Anda tidak dapat menghapus kumpulan alamat yang ada. Penanda yang Anda tentukan di gcloud container bare-metal clusters update untuk menambahkan alamat gabungan project bergantung pada jenis load balancer yang dipaketkan:

  • MetalLB (lapisan 2): Gunakan tanda --metal-lb-address-pools.
  • Border Gateway Protocol (BGP): Menggunakan 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 ini 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 kolam renang.

  • avoid-buggy-ips: Jika Anda menetapkannya ke True, pengelolaan alamat IP Pengontrol (IPAM) tidak akan menetapkan alamat IP yang diakhiri dengan .0 atau .255 untuk Layanan. Hal ini untuk menghindari masalah perangkat konsumen yang memiliki bug secara keliru mengurangi lalu lintas data yang dikirim ke alamat IP khusus itu. Jika tidak ditentukan, nilai defaultnya adalah False. Dimulai dengan Google Distributed Cloud versi 1.16.0, Anda dapat mengubah nilai ini di kumpulan alamat yang sudah ada.

  • manual-assign: Jika Anda tidak ingin pengontrol IPAM otomatis menetapkan alamat IP dari kumpulan ini ke Layanan, setel ini untuk True. Kemudian pengembang dapat membuat {i>Service<i} jenis LoadBalancer dan tentukan secara manual salah satu alamat dari kolam renang. Jika tidak ditentukan, manual-assign akan ditetapkan ke False. Dimulai dengan Google Distributed Cloud versi 1.16.0, Anda dapat memodifikasi nilai ini dalam kumpulan alamat yang ada.

  • Dalam daftar addresses: Setiap alamat harus berupa rentang dalam CIDR atau format 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:

  • 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 flag, seperti yang ditunjukkan di 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 yang dipaketkan.

Mencegah penghapusan cluster yang tidak disengaja

bmctl

Jika Anda menambahkan anotasi baremetal.cluster.gke.io/prevent-deletion: "true" ke file konfigurasi cluster Anda, Anda tidak akan bisa menghapus . 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 ini baremetal.cluster.gke.io/prevent-deletion="true", Anda dicegah 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. Upaya untuk menghapus cluster pengguna:

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

    Respons dari perintah 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" di perintah update.

Abaikan pemeriksaan preflight

Fitur ini hanya tersedia dengan bmctl update.

Nilai default atribut bypassPreflightCheck adalah false. Jika Anda menetapkan kolom ini ke true dalam konfigurasi cluster pemeriksaan preflight internal akan diabaikan saat Anda menerapkan resource beberapa 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 clusterSecurity.authorization.clusterAdmin.gcpAccounts dari file konfigurasi cluster. 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 menimpa daftar dengan apa yang Anda tentukan di file konfigurasi. Kepada menghapus akun, menghapusnya dari file konfigurasi cluster, dan menjalankan bmctl update.

gcloud CLI

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

Perintah update menimpa seluruh daftar pemberian izin. Tentukan semua data yang ada dan pengguna baru yang ingin Anda jadikan administrator cluster.

Menetapkan pengguna yang login

Anda dapat menentukan nama pengguna non-root yang ingin Anda gunakan untuk sudo tanpa sandi akses kapabilitas ke mesin node di cluster Anda. Kunci SSH Anda, sshPrivateKeyPath, harus berfungsi untuk pengguna yang ditentukan. Pemeriksaan operasi pembuatan dan update cluster komputer {i>node<i} itu 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 akan digunakan untuk mengakses mesin node di --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 masing-masing mesin node cluster:

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

    sudo visudo -f /etc/sudoers
    

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

  2. Untuk 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, jalankan perintah berikut berikut:

    su - USERNAME
    
  5. Untuk memverifikasi bahwa sandi tidak diperlukan bagi pengguna yang login untuk menjalankan sudo ini, jalankan perintah sudo berikut:

    sudo ip a
    

Jaringan lanjutan

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

bmctl

Setel clusterNetwork.advancedNetworking truedi 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 di 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 IP mengambang untuk fitur jaringan lanjutan, seperti gateway NAT keluar atau paket load balancing 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 cluster resource dan resource kustom lainnya. Perintah gcloud container bare-metal clusters create dan update mendukung konfigurasi BGP di cluster tetapi bukan resource kustom.

Saat Anda mengonfigurasi load balancer yang dipaketkan dengan BGP, bidang data akan melakukan beban menyeimbangkan penggunaan, secara {i>default<i}, rekan eksternal yang sama yang ditentukan untuk peering bidang kontrol. Atau, Anda dapat mengonfigurasi pemuatan bidang data menyeimbangkannya secara terpisah, menggunakan resource kustom BGPLoadBalancer dan Resource kustom BGPPeer. Untuk informasi selengkapnya, lihat Konfigurasikan 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

Meningkatkan rentang jaringan layanan

Untuk membuat lebih banyak layanan dari batas awal, Anda dapat mengurangi layanan IPv4 Masker CIDR untuk meningkatkan jaringan layanan cluster Anda. Mengurangi penyamaran (nilai setelah "/") 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 dalam 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 gambar kubelet

Kubelet dijalankan pada setiap node cluster Anda. Kubelet bertanggung jawab untuk memantau container pada node dan memastikan container tersebut responsif. Saat diperlukan, kueri kubelet dan mengambil image dari Container Registry.

Memperbarui konfigurasi kubelet secara manual dan menjaganya tetap sinkron di semua node cluster dapat menjadi tantangan tersendiri. Untuk memperburuk keadaan, perubahan konfigurasi kubelet manual pada node akan hilang saat Anda mengupgrade cluster Anda.

Untuk membantu membuat pembaruan yang disinkronkan lebih mudah dan persisten, Google Distributed Cloud memungkinkan Anda menentukan beberapa setelan kubelet untuk setiap kumpulan node cluster: node bidang kontrol, node load balancer, dan node pekerja. Setelan berlaku untuk semua node dalam kumpulan tertentu dan bertahan selama upgrade cluster. Kolom karena setelan ini dapat diubah, jadi Anda dapat memperbaruinya kapan saja, tidak 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 informasi lebih lanjut tentang masing-masing isian 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 defaultnya 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 di kumpulan.

gcloud CLI

Flag berikut mengontrol operasi pull Container Registry untuk kubelet:

Cara menggunakan

Berikut adalah beberapa pertimbangan untuk menyesuaikan pengambilan gambar:

  • Karena gambar ditarik secara seri secara default, penarikan gambar yang membutuhkan waktu dapat menunda semua pengambilan gambar lainnya yang dijadwalkan pada sebuah node. Penarikan gambar tertunda dapat memblokir proses upgrade (terutama saat Google Distributed Cloud baru image yang perlu di-deploy di node). Jika Anda terpengaruh oleh pull gambar penundaan, Anda dapat menonaktifkan penarikan gambar serial untuk memungkinkan gambar paralel yang ditarik.

  • Jika mengalami error throttling pull gambar, seperti pull QPS exceeded, Anda mungkin perlu meningkatkan *-registry-pull-qps dan *-registry-burst untuk meningkatkan throughput pull image. Kedua isian ini menyesuaikan tingkat pull (pull rate) dan ukuran antrean (antrean) serta dapat membantu mengatasi throttling lainnya masalah performa. Nilai negatif tidak diizinkan.

Dokumentasi referensi