Dengan mengubah konfigurasi cluster yang ada, Anda dapat menyesuaikan kapasitas infrastruktur dan setelan operasional seiring berkembangnya workload. Anda dapat menambahkan, menghapus, atau mengganti node, memperbarui anotasi, dan mengubah setelan yang dapat diubah di seluruh lingkungan menggunakan bmctl, Google Cloud CLI, atau Terraform. Untuk mengetahui daftar lengkap kolom yang didukung, lihat Referensi kolom konfigurasi cluster.
Dukungan alat bergantung pada jenis cluster dan resource yang Anda ubah:
- gcloud CLI dan Terraform hanya mendukung update cluster admin dan pengguna. Untuk mengupdate jenis cluster lainnya, Anda harus menggunakan
bmctl. - gcloud CLI dan Terraform hanya mendukung perubahan pada resource
ClusterdanNodePool. Untuk mengupdate resource kustom lain yang memengaruhi cluster, Anda harus menggunakankubectlataubmctl.
Cara mengupdate cluster
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. Referensi kolom adalah tabel yang dapat diurutkan. Klik judul kolom untuk mengubah tata urutan. Klik nama kolom untuk melihat deskripsinya.
Secara umum, Anda melakukan urutan tindakan berikut untuk mengupdate cluster:
bmctl
Ubah nilai kolom yang berlaku dalam file konfigurasi cluster, yang secara default terletak di sini:
bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yamlUpdate cluster dengan menjalankan perintah
bmctl update:bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIGGanti kode berikut:
CLUSTER_NAME: nama cluster yang ingin Anda update.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
Tentukan hanya flag untuk konfigurasi yang ingin Anda ubah.
Jalankan perintah update yang berlaku:
Cluster admin:
gcloud container bare-metal admin-clusters updateCluster pengguna:
gcloud container bare-metal clusters update.Node pool di cluster pengguna:
gcloud container bare-metal node-pools update
Terraform
Ubah nilai kolom yang berlaku dalam file konfigurasi Terraform yang Anda gunakan untuk membuat cluster atau node pool. Lihat dokumentasi referensi Terraform untuk mengetahui deskripsi kolom yang mendetail:
Perbarui konfigurasi dengan menjalankan perintah
terraform apply.
Bagian berikut menguraikan beberapa contoh umum untuk mengupdate 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 termasuk dalam node pool. Untuk menambahkan node baru ke cluster, Anda harus 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: node pool bidang kontrol, load balancer, dan worker node. Bagian berikut menjelaskan cara menambahkan atau menghapus node dari setiap jenis node pool.
bmctl
Anda dapat 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 akan diedit untuk node pool tertentu:
- Worker node pool: tambahkan atau hapus alamat IP node di bagian
spec.nodesdari spesifikasiNodePool. - Node pool bidang kontrol: tambahkan atau hapus alamat IP node di bagian
spec.controlPlane.nodePoolSpec.nodesdari spesifikasiCluster. - Node pool load balancer: tambahkan atau hapus alamat IP node di bagian
spec.loadBalancer.nodePoolSpec.nodesdari spesifikasiCluster.
Contoh: menghapus worker node
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:
(Opsional) Jika node yang Anda hapus menjalankan Pod penting, tempatkan node ke dalam mode pemeliharaan terlebih dahulu.
Anda dapat memantau proses pengosongan node untuk worker node dengan melihat kolom
status.nodesDraineddanstatus.nodesDrainingpada resourceNodePool.Edit file konfigurasi cluster untuk menghapus entri alamat IP untuk node.
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 yang Anda gunakan untuk menentukan alamat IP bergantung pada jenis node pool yang ingin Anda update:
Worker node pool: Jalankan
gcloud container bare-metal node-pools updatedan tentukan alamat IP di flag--node-configs 'node-ip=IP_ADDRESS'.Node pool bidang kontrol di cluster admin: Jalankan
gcloud container bare-metal admin-clusters updatedan 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 updatedan tentukan alamat IP dalam flag--control-plane-node-configs 'node-ip=IP_ADDRESS'.Node pool load balancer: Jalankan
gcloud container bare-metal clusters updatedan 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 mengganti 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 dengan hanya menyertakan alamat IP node yang ingin
dipertahankan.
Contoh: menghapus worker node
Bagian ini menunjukkan cara menghapus worker node dari node pool menggunakan data contoh. Perintah gcloud CLI tambahan yang mungkin berguna bagi Anda juga disertakan dalam langkah-langkah berikut.
(Opsional) Jika node yang Anda hapus menjalankan Pod penting, tempatkan node ke dalam mode pemeliharaan terlebih dahulu.
Anda dapat memantau proses pengosongan node untuk worker node dengan melihat kolom
status.nodesDraineddanstatus.nodesDrainingpada resourceNodePool.Jalankan perintah
listuntuk menampilkan daftar semua node pool dalam cluster:gcloud container bare-metal node-pools list \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1Outputnya mirip dengan hal berikut ini:
NAME LOCATION STATE node-pool-1 us-central1 RUNNING node-pool-2 asia-east1 RUNNINGJalankan perintah
describeuntuk menampilkan 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-central1Contoh output berikut dipotong agar lebih mudah dibaca:
annotations: ... baremetal.cluster.gke.io/version: 1.36 ... 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
nameberisi 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, beserta flag--cluster,--project, dan--location.Bagian
nodeConfigsberisi dua kolomnodeIpdengan alamat IP node.
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
updatemengganti 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 completeDalam contoh output, string
operation-1697154681749-6078d9def4030-76686d6e-9fcb1de9adalahOPERATION_IDdari 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-central1Anda dapat menjalankan kembali perintah tersebut sesering mungkin 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 ketersediaan tinggi (HA) di
semua jenis cluster.
Anda dapat mengganti node dalam cluster dengan melakukan langkah-langkah berikut:
- Hapus alamat IP node dari file konfigurasi cluster.
- Mengupdate cluster.
- Periksa status node di cluster.
- Tambahkan alamat IP node baru ke file konfigurasi cluster yang sama.
- Mengupdate cluster.
Contoh: mengganti node bidang kontrol HA
Berikut adalah 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:
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.12Update 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 update.
- 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.
Setelah perintah
bmctl updateberhasil dijalankan, perlu waktu beberapa saat untuk menyelesaikan tugasmachine-preflightdanmachine-init. Anda dapat melihat status node dan node pool masing-masing dengan menjalankan perintah yang dijelaskan di bagian Memverifikasi update dalam dokumen ini. Setelah node pool dan node dalam status siap, Anda dapat melanjutkan ke langkah berikutnya.Tambahkan node bidang kontrol baru ke node pool dengan menambahkan alamat IP node bidang kontrol baru ke bagian
spec.controlPlane.nodePoolSpec.nodespada 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.14Update 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:
Hapus alamat IP node dengan menjalankan perintah
updateyang berlaku:- Cluster pengguna:
gcloud container bare-metal clusters update - Cluster admin:
gcloud container bare-metal admin-clusters update
- Cluster pengguna:
Periksa status penghapusan node di cluster dengan menjalankan
gcloud container bare-metal operations describe OPERATION_ID.Tambahkan alamat IP node baru dengan menjalankan perintah
updateyang 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.
Jalankan perintah
listuntuk mencantumkan semua cluster pengguna dalam projectGoogle Cloud :gcloud container bare-metal clusters list \ --project=example-project-12345 \ --location=-Jika Anda menetapkan
--location=-, artinya semua cluster di semua region akan dicantumkan. Jika Anda perlu mempersempit cakupan daftar, tetapkan--locationke region tertentu.Outputnya mirip dengan hal berikut ini:
NAME LOCATION VERSION ADMIN_CLUSTER STATE abm-user-cluster1a us-central1 1.36 abm-admin-cluster1 RUNNING abm-user-cluster1b europe-west1 1.36 abm-admin-cluster1 RUNNINGJalankan perintah
describedi cluster:gcloud container bare-metal clusters describe abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1Contoh 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
nameberisi 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--projectdan--location flags.Bagian
nodeConfigsberisi tiga kolomnodeIpdengan alamat IP node bidang kontrol.
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 completeDalam contoh output, string
operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7adalahOPERATION_IDdari 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-central1Anda dapat menjalankan kembali perintah tersebut sesering mungkin untuk memeriksa statusnya.
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 menunjukkan 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 pool load balancing untuk load balancer paket 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 ada. Mulai 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 lebih banyak kumpulan alamat load balancing kapan saja untuk load balancer yang dipaketkan, 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 dipaketkan:
- MetalLB (lapisan 2): Gunakan flag
--metal-lb-address-pools. - Border Gateway Protocol (BGP): Gunakan 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 koma.
pool: Nama pilihan Anda untuk pool.avoid-buggy-ips: Jika Anda menetapkan ini keTrue, pengontrol pengelolaan alamat IP (IPAM) tidak akan menetapkan alamat IP yang diakhiri dengan.0atau.255ke Service. Hal ini menghindari masalah perangkat konsumen yang bermasalah yang secara keliru menghapus traffic yang dikirim ke alamat IP khusus tersebut. Jika tidak ditentukan, setelan defaultnya adalahFalse. Mulai 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 otomatis menetapkan alamat IP dari kumpulan ini ke Service, tetapkan ini keTrue. Kemudian, developer dapat membuat Service jenisLoadBalancerdan menentukan secara manual salah satu alamat dari pool. Jika tidak ditentukan,manual-assignakan ditetapkan keFalse. Mulai 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 format CIDR atau rentang dengan tanda hubung. Untuk menentukan satu alamat IP dalam kumpulan (seperti untuk VIP ingress), gunakan/32dalam 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 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 bagian Mengonfigurasi load balancing yang dipaketkan.
Mencegah penghapusan cluster yang tidak disengaja
bmctl
Jika 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:
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"Coba hapus cluster pengguna:
gcloud container bare-metal clusters delete abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --force \ --allow-missingRespons dari perintah ini 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 clusterUntuk menghapus anotasi, tentukan
--remove-annotations=baremetal.cluster.gke.io/prevent-deletion="true"dalam perintahupdate.
Mengabaikan 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
pada file konfigurasi cluster. Akun tersebut diberi peran cluster-admin 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.
Saat mengupdate cluster pengguna untuk menambahkan akun, pastikan untuk menyertakan semua akun dalam daftar (baik akun yang sudah ada maupun akun baru) karena bmctl update akan menimpa daftar dengan yang Anda tentukan dalam 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. Flag ini 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.
Perintah update akan menimpa seluruh daftar pemberian izin. Tentukan semua pengguna lama dan
baru yang Anda inginkan untuk menjadi administrator cluster.
Menetapkan pengguna login
Anda dapat menentukan nama pengguna non-root yang ingin Anda gunakan 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 memeriksa
apakah 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 Anda gunakan untuk mengakses mesin node di
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 di setiap
mesin node cluster:
Gunakan
sudo visudountuk membuka file sudoers untuk diedit:sudo visudo -f /etc/sudoersPerintah
visudomengunci file sudoers untuk mencegah pengeditan simultan dan memvalidasi sintaksis file setelah disimpan.Untuk pengguna login Anda, tambahkan entri ke file sudoers seperti berikut:
USERNAME ALL=(ALL) NOPASSWD: ALLTutup dan simpan file.
Untuk menjalankan perintah dengan hak istimewa pengguna login Anda, jalankan perintah berikut:
su - USERNAMEUntuk memverifikasi bahwa sandi tidak diperlukan bagi pengguna login Anda untuk menjalankan perintah
sudo, jalankan perintahsudoberikut: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 true dalam 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 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 egress atau fitur load balancing yang dipaketkan 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 yang dipaketkan dengan BGP, load balancing bidang data, secara default, menggunakan peer eksternal yang sama dengan 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 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 daripada batas awal, Anda dapat mengurangi mask 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 pada 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
Mulai versi 1.34, Anda akan melihat resource ServiceCIDR baru di cluster Anda. Resource ini digunakan oleh bidang kontrol Kubernetes untuk mengelola rentang alamat IP untuk layanan Anda.
Jangan mencoba membuat atau mengubah resource ServiceCIDR secara manual. Resource ini dikelola secara otomatis oleh operator cluster berdasarkan nilai dalam resource kustom Cluster Anda. Untuk mencegah masalah jaringan, setiap pengeditan manual langsung
akan diblokir, dan Anda akan menerima pesan error yang mirip dengan berikut ini:
The servicecidrs "my-cidr" is invalid: : This resource is managed by cluster
operator and cannot be modified directly by users.
Mengonfigurasi setelan pull image kubelet
Kubelet berjalan di 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 Artifact Registry.
Memperbarui konfigurasi kubelet secara manual dan membuatnya tetap disinkronkan di semua node cluster dapat menjadi tantangan. Lebih buruk lagi, perubahan konfigurasi kubelet manual pada node Anda akan hilang saat Anda mengupgrade cluster.
Untuk membantu mempermudah dan mempertahankan update yang disinkronkan, 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 kumpulan tertentu dan tetap ada selama upgrade cluster. Kolom untuk setelan ini dapat diubah, sehingga Anda dapat memperbaruinya kapan saja, tidak hanya selama pembuatan cluster.
bmctl
Kolom yang didukung berikut mengontrol operasi pull 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 dari spesifikasi Cluster dan
spesifikasi NodePool untuk kumpulan node berikut:
- Spesifikasi cluster:
- Node bidang kontrol
spec.controlPlane.nodePoolSpec.kubeletConfig - Node load balancer
spec.loadBalancer.nodePoolSpec.kubeletConfig - Spesifikasi NodePool:
- Worker node
spec.kubeletConfig
Contoh berikut menunjukkan kolom yang ditambahkan dengan nilai defaultnya dalam
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 ini berlaku untuk semua node dalam kumpulan.
gcloud CLI
Flag berikut mengontrol operasi pull Artifact Registry untuk kubelet:
Node bidang kontrol
Node load balancer
- --bgp-load-balancer-registry-burst
- --bgp-load-balancer-registry-pull-qps
- --disable-bgp-load-balancer-serialize-image-pulls
- --enable-bgp-load-balancer-serialize-image-pulls
- --metal-lb-load-balancer-registry-burst
- --metal-lb-load-balancer-registry-pull-qps
- --disable-metal-lb-load-balancer-serialize-image-pull
- --enable-metal-lb-load-balancer-serialize-image-pulls
Worker node
Cara menggunakan
Berikut beberapa pertimbangan untuk menyesuaikan penarikan image:
Karena image ditarik secara seri secara default, penarikan image yang memerlukan waktu lama dapat menunda semua penarikan image lain yang dijadwalkan pada sebuah 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 penundaan pull image, Anda dapat menonaktifkan pull image serial untuk mengizinkan pull image paralel.
Jika Anda mengalami error throttling penarikan image, seperti
pull QPS exceeded, Anda dapat meningkatkan*-registry-pull-qpsdan*-registry-burstuntuk meningkatkan throughput penarikan image. Kedua kolom ini menyesuaikan kecepatan pull dan ukuran antrean, serta dapat membantu mengatasi masalah terkait throttling lainnya. Nilai negatif tidak diizinkan.
Penyesuaian Keepalived
Mulai versi 1.32, Google Distributed Cloud menyediakan beberapa penyesuaian konfigurasi Keepalived. Dengan load balancing yang dipaketkan, 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 otomatis mengonfigurasi konfigurasi VRRP Keepalived untuk membuat perilaku failover menjadi deterministik dan mencegah interleaving balasan ARP dengan alamat MAC yang berbeda. Hal ini dilakukan dengan mengonfigurasi setiap instance Keepalived dengan nilai
priorityyang berbeda.Google Distributed Cloud memungkinkan Anda menentukan jumlah pesan ARP (GARP) gratis yang akan dikirim sekaligus setelah node bidang kontrol beralih ke peran server master. Untuk mengubah jumlah pesan GARP yang akan dikirim, tambahkan kolom
controlPlane.loadBalancer.keepalivedVRRPGARPMasterRepeatke file konfigurasi cluster, tetapkan ke nilai baru, dan update cluster Anda. Nilai ini dipetakan ke setelanvrrp_garp_master_repeatuntuk Keepalived. Nilai defaultnya adalah 5.Contoh berikut menunjukkan cara menentukan
keepalivedVRRPGARPMasterRepeatdalam 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.36 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 Operator GPU NVIDIA yang dipaketkan
Operator GPU NVIDIA memungkinkan Anda menjalankan workload terkait GPU di cluster Anda. Mulai dari Google Distributed Cloud versi 1.33.0, cluster dipaketkan dengan stack Operator GPU NVIDIA lengkap untuk menyediakan solusi terkelola dalam menangani komponen software NVIDIA yang diperlukan untuk menyediakan GPU di worker node cluster Anda.Prasyarat
Sebelum menginstal Operator GPU NVIDIA yang dipaketkan, 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 di worker node cluster Anda. Bagian berikut untuk menginstal Operator GPU NVIDIA mencakup langkah-langkah untuk memverifikasi bahwa GPU telah 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:
Gunakan driver NVIDIA yang telah diinstal sebelumnya di image sistem operasi Anda.
Gunakan petunjuk dalam Panduan Memulai Penginstalan Driver NVIDIA untuk menginstal driver NVIDIA secara manual.
Driver GPU NVIDIA harus diinstal dan siap sebelum Anda mengaktifkan Operator GPU NVIDIA yang dipaketkan.
Informasi versi
Bagian ini berisi informasi versi software untuk Operator GPU NVIDIA yang dipaketkan.
Versi komponen software
Google Distributed Cloud versi rilis 1.33 memaketkan NVIDIA GPU Operator versi 25.3.1. Di Google Distributed Cloud, paket berisi image berikut (dengan CDI diaktifkan secara default):
- NVIDIA Container Toolkit versi v1.17.9
- 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 dipaketkan 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 NVIDIA Docs Hub untuk mengetahui informasi kompatibilitas driver.
Mengupdate NVIDIA GPU Operator yang dipaketkan
Jika Anda telah menginstal Operator GPU NVIDIA di cluster, saat Anda mengupgrade ke versi minor baru, versi paket terbaru Operator GPU NVIDIA akan diinstal.
Menginstal operator yang dipaketkan
Meskipun Operator GPU NVIDIA yang dipaketkan 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 Operator GPU NVIDIA diinstal ke cluster saat anotasi diterapkan.
Meng-uninstal operator yang dipaketkan
Meskipun Operator GPU NVIDIA yang dipaketkan masih dalam Pratinjau, Anda dapat meng-uninstal-nya 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 akan dihapus dari cluster saat anotasi dihapus.
Mengaktifkan alokasi resource dinamis
Alokasi resource dinamis adalah Kubernetes API yang memungkinkan Anda meminta dan berbagi resource umum, 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 tepat 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 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:
Edit file konfigurasi cluster Anda untuk menyertakan anotasi pratinjau
preview.baremetal.cluster.gke.io/dynamic-resource-allocation: "enable"dan tambahkanDynamicResourceAllocation: truedi bawahfeatureGatesdi bagiankubeletConfig: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 configurationUpdate cluster dengan menjalankan perintah
bmctl update:bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIGGanti kode berikut:
CLUSTER_NAME: nama cluster pengguna yang sedang Anda update.ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin.
Setelah Anda menerapkan konfigurasi ini, kolom
READYuntuk mesin bare metal Anda mungkin beralih antaraTruedanFalsebeberapa kali. Tunggu hingga kolomREADYstabil diTruesebelum melanjutkan.Untuk mengaktifkan feature gate
DynamicResourceAllocationdi node pool yang memiliki node dengan GPU, tetapkanDynamicResourceAllocationketruedi bagianfeatureGatespada bagiankubeletConfigdi 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 configurationSetelah Anda menambahkan atau memperbarui node pool, tunggu hingga semua mesin bare metal di node pool mencapai status
Ready.Untuk memeriksa status mesin bare metal cluster, gunakan perintah berikut:
kubectl get baremetalmachines --kubeconfig ADMIN_KUBECONFIG -AJika mesin bare metal sudah 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 dipaketkan memiliki batasan berikut:
Operator GPU NVIDIA yang dipaketkan hanya mendukung komponen software NVIDIA berikut:
- NVIDIA Container Toolkit
- NVIDIA DCGM Exporter
- Plugin Perangkat Kubernetes NVIDIA
- NVIDIA MIG Manager untuk Kubernetes.
Selama Pratinjau, konfigurasi Operator GPU NVIDIA bersifat tetap. Jika Anda mencoba menyesuaikan setelan apa pun, setelan tersebut akan direkonsiliasi kembali ke setelan penginstalan asli.
Operator GPU NVIDIA yang dipaketkan tidak dapat digunakan untuk menginstal driver GPU NVIDIA.
Selama Pratinjau, fitur ini menggunakan grup API
resource.k8s.io/v1beta1, yang berbeda dengan grup Kubernetes API open source untuk fitur ini,resource.k8s.io/v1. Grup API open sourcev1menyediakan lebih banyak fitur dan stabilitas yang lebih baik daripada grup APIv1beta1.
Langkah berikutnya
Untuk menggunakan alokasi resource dinamis dengan workload GPU, lihat Mengelola perangkat GPU dengan alokasi resource dinamis.
Untuk mempelajari alokasi resource dinamis lebih lanjut, lihat Alokasi Resource Dinamis dalam dokumentasi Kubernetes.