Setelah membuat cluster, Anda dapat mengubah beberapa aspek konfigurasi cluster. Misalnya, Anda dapat:
- Menambahkan, menghapus, atau mengganti node.
- Menambahkan atau menghapus anotasi ke cluster.
- Ubah nilai kolom yang dapat diubah di resource cluster dan node pool.
- Mengubah resource kustom lainnya.
Anda dapat menggunakan bmctl
atau Google Cloud CLI untuk melakukan update pada cluster. Jika Anda membuat cluster admin atau pengguna menggunakan Terraform, Anda dapat menggunakan Terraform untuk 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 kolom yang dapat diubah dan tidak dapat diubah, lihat Referensi kolom konfigurasi cluster. Referensi kolom adalah tabel yang dapat diurutkan. Klik judul kolom untuk mengubah urutan pengurutan. Klik nama kolom untuk melihat deskripsinya.
gcloud CLI dan Terraform hanya mendukung pembaruan cluster admin dan pengguna. Anda harus menggunakan
bmctl
untuk mengupdate jenis cluster lainnya.CLI gcloud dan Terraform hanya mendukung perubahan pada resource cluster dan node pool. Anda harus menggunakan
kubectl
ataubmctl
untuk memperbarui resource kustom lainnya yang memengaruhi cluster.
Cara mengupdate cluster
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.yaml
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 update.KUBECONFIG
: untuk cluster admin, campuran, 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 update
Cluster 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 deskripsi kolom 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 grup node dalam cluster yang memiliki konfigurasi yang sama. Perlu diingat bahwa node selalu merupakan bagian dari kumpulan node. Untuk menambahkan node baru ke cluster, Anda perlu menambahkannya ke node pool tertentu. Menghapus node dari node pool sama saja dengan menghapus node dari cluster secara keseluruhan.
Ada tiga jenis node pool di Google Distributed Cloud: bidang kontrol, load balancer, dan worker node pool. Bagian berikut menjelaskan cara menambahkan atau menghapus node dari setiap jenis node pool.
bmctl
Anda menambahkan atau menghapus node dari node pool dengan menambahkan atau menghapus alamat IP node di bagian tertentu dari file konfigurasi cluster. Daftar berikut menunjukkan bagian yang akan diedit untuk node pool tertentu:
- Node pool pekerja: tambahkan atau hapus alamat IP node di bagian
spec.nodes
dari spesifikasiNodePool
. - Node pool bidang kontrol: tambahkan atau hapus alamat IP node di bagian
spec.controlPlane.nodePoolSpec.nodes
dari spesifikasiCluster
. - Node pool load balancer: tambahkan atau hapus alamat IP node di bagian
spec.loadBalancer.nodePoolSpec.nodes
dari spesifikasiCluster
.
Contoh: menghapus node pekerja
Berikut adalah contoh file konfigurasi cluster yang menampilkan spesifikasi dua node pekerja:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 192.0.2.1
- address: 192.0.2.2
Untuk menghapus node:
(Opsional) Jika node yang Anda hapus menjalankan pod penting, masukkan node ke dalam mode pemeliharaan terlebih dahulu.
Anda dapat memantau proses pengosongan node untuk node pekerja dengan melihat kolom
status.nodesDrained
danstatus.nodesDraining
di 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 tempat Anda menentukan alamat IP bergantung pada jenis
kumpulan node yang ingin Anda perbarui:
Kumpulan node pekerja: Jalankan
gcloud container bare-metal node-pools update
dan 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 update
dan tentukan alamat IP di flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Node pool bidang kontrol di cluster pengguna: Jalankan
gcloud container bare-metal clusters update
dan tentukan alamat IP dalam flag--control-plane-node-configs 'node-ip=IP_ADDRESS'
.Node pool load balancer: Jalankan
gcloud container bare-metal clusters update
dan tentukan alamat IP dalam flag--metal-lb-load-balancer-node-configs 'node-ip=IP_ADDRESS'
atau
--bgp-load-balancer-node-configs 'node-ip=IP_ADDRESS'
Flag tempat Anda menentukan alamat IP hanya menerima satu node-ip
. Anda
menyertakan flag untuk setiap alamat IP di node pool.
Perintah update
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
Anda pertahankan.
Contoh: menghapus node pekerja
Bagian ini menunjukkan cara menghapus node pekerja dari node pool menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna bagi Anda juga disertakan dalam langkah-langkah berikut.
(Opsional) Jika node yang Anda hapus menjalankan pod penting, masukkan node ke dalam mode pemeliharaan terlebih dahulu.
Anda dapat memantau proses pengosongan node untuk node pekerja dengan melihat kolom
status.nodesDrained
danstatus.nodesDraining
di resourceNodePool
.Jalankan perintah
list
untuk mencantumkan semua node pool dalam cluster:gcloud container bare-metal node-pools list \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Outputnya mirip dengan hal berikut ini:
NAME LOCATION STATE node-pool-1 us-central1 RUNNING node-pool-2 asia-east1 RUNNING
Jalankan perintah
describe
untuk menampilkan daftar semua alamat IP di node pool:gcloud container bare-metal node-pools describe node-pool-1 \ --cluster=abm-user-cluster1 \ --project=example-project-12345 \ --location=us-central1
Contoh output berikut dipotong agar lebih 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 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
nodeConfigs
berisi dua kolomnodeIp
dengan 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
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
adalahOPERATION_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 ini setiap saat untuk memeriksa statusnya.
Jika penghapusan node gagal, Anda dapat memaksa penghapusannya dari cluster. Untuk mengetahui detailnya, lihat Mereset node yang gagal di Google Distributed Cloud.
Mengganti node bidang kontrol HA
bmctl
Anda dapat menggunakan bmctl
untuk mengganti node bidang kontrol dengan ketersediaan tinggi (HA) di
semua jenis cluster.
Anda mengganti node di cluster dengan melakukan langkah-langkah berikut:
- Hapus alamat IP node dari file konfigurasi cluster.
- Update cluster.
- Periksa status node di cluster.
- Tambahkan alamat IP node baru ke file konfigurasi cluster yang sama.
- Update cluster.
Contoh: mengganti node bidang kontrol HA
Berikut adalah contoh file konfigurasi cluster yang menampilkan tiga node platform 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 dalam file konfigurasi cluster. Setelah melakukan perubahan ini, file konfigurasi cluster akan terlihat seperti ini:
--- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-cluster namespace: cluster-user-cluster spec: controlPlane: nodePoolSpec: nodes: - address: 192.0.2.11 - address: 192.0.2.12
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 update.
- Jika cluster adalah cluster mandiri (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 update
berhasil dieksekusi, perlu waktu beberapa saat untuk menyelesaikan tugasmachine-preflight
danmachine-init
. Anda dapat melihat status node dan node pool masing-masing dengan menjalankan perintah yang dijelaskan di bagian Memverifikasi update Anda dalam dokumen ini. Setelah node pool dan node berada dalam status siap, Anda dapat melanjutkan ke langkah berikutnya.Tambahkan node panel kontrol baru ke node pool dengan menambahkan alamat IP node panel 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
Update cluster dengan menjalankan perintah berikut:
bmctl update cluster -c CLUSTER_NAME \ --kubeconfig=KUBECONFIG
gcloud CLI
Anda dapat menggunakan gcloud CLI untuk mengganti node panel kontrol ketersediaan tinggi (HA) di cluster admin dan pengguna.
Anda mengganti node di cluster dengan melakukan langkah-langkah berikut:
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
- 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
update
yang berlaku.
Contoh: mengganti node bidang kontrol HA
Bagian ini menunjukkan cara mengganti panel kontrol dari cluster menggunakan contoh data. Perintah gcloud CLI tambahan yang mungkin berguna bagi Anda juga disertakan dalam langkah-langkah berikut.
Jalankan perintah
list
untuk mencantumkan 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 wilayah. Jika Anda perlu mempersempit cakupan daftar, tetapkan--location
ke region 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
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 lebih mudah dibaca:
... controlPlane: controlPlaneNodePoolConfig: nodePoolConfig: nodeConfigs: - nodeIp: 192.0.2.11 - nodeIp: 192.0.2.12 - nodeIp: 192.0.2.13 operatingSystem: LINUX ... name: projects/example-project-1234567/locations/us-central1/bareMetalClusters/abm-user-cluster1a ...
Perhatikan hal berikut dalam contoh output:
Kolom
name
berisi nama cluster yang sepenuhnya memenuhi syarat. Saat menentukan nama cluster dalam perintah, Anda dapat menentukan nama yang sepenuhnya memenuhi syarat, atau nama cluster, misalnya,abm-user-cluster1a
, beserta--project
dan--location flags
.Bagian
nodeConfigs
berisi tiga kolomnodeIp
dengan 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 complete
Dalam contoh output, string
operation-1956154681749-6078d9def4030-76686d6e-9fcb1de7
adalahOPERATION_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 ini setiap saat 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 update
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 berlangsung. Anda
harus menunggu hingga status 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 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.
Load balancer address pools
bmctl
Bagian addressPools
berisi kolom untuk menentukan kumpulan load balancing bagi load balancer MetalLB
dan Border Gateway Protocol (BGP) yang dipaketkan. 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 menetapkannya keTrue
, pengontrol pengelolaan alamat IP (IPAM) tidak akan menetapkan alamat IP yang diakhiri dengan.0
atau.255
ke Layanan. Hal ini menghindari masalah perangkat konsumen yang bermasalah yang secara tidak sengaja menurunkan 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 secara otomatis menetapkan alamat IP dari kumpulan ini ke Layanan, tetapkan ini keTrue
. Kemudian, developer dapat membuat Layanan dengan jenisLoadBalancer
dan menentukan salah satu alamat dari kumpulan secara manual. Jika tidak ditentukan,manual-assign
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 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 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 informasi selengkapnya tentang kumpulan alamat load balancer, lihat loadBalancer.addressPools di 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 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"
Coba hapus cluster pengguna:
gcloud container bare-metal clusters delete abm-user-cluster1a \ --project=example-project-12345 \ --location=us-central1 \ --force \ --allow-missing
Respons dari perintah ini mirip dengan berikut ini:
ERROR: (gcloud.container.bare-metal.clusters.delete) INVALID_ARGUMENT: invalid request: admission webhook "vcluster.kb.io" denied the request: annotations[baremetal.cluster.gke.io/prevent-deletion]: Invalid value: "true": Annotation "baremetal.cluster.gke.io/prevent-deletion" should be removed in order to delete this cluster
Untuk menghapus anotasi, tentukan
--remove-annotations=baremetal.cluster.gke.io/prevent-deletion="true"
dalam perintahupdate
.
Melewati pemeriksaan pra-penerbangan
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 pra-penerbangan internal akan diabaikan saat Anda menerapkan resource ke
cluster yang ada.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
bypassPreflightCheck: true
Menambahkan atau menghapus administrator cluster
bmctl
Anda dapat menambahkan atau menghapus akun pengguna atau akun layanan sebagai administrator cluster
untuk cluster pengguna dengan menentukan alamat email di bagian clusterSecurity.authorization.clusterAdmin.gcpAccounts
file konfigurasi cluster. Akun tersebut diberi
peran cluster-admin di cluster, 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 (baik akun lama maupun 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 akun pengguna atau akun layanan sebagai administrator cluster
dengan menentukan alamat email di tanda --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.iam.gserviceaccount.com
Perintah update
menimpa seluruh daftar hibah. Tentukan semua pengguna lama dan
baru yang ingin Anda jadikan administrator cluster.
Menetapkan pengguna login
Anda dapat menentukan nama pengguna non-root yang ingin digunakan untuk akses kemampuan sudo
tanpa sandi ke mesin node di cluster. 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 digunakan untuk mengakses mesin node dalam
tanda --login-user
, misalnya:
gcloud container bare-metal clusters update abm-user-cluster1a \
--project=example-project-12345 \
--location=us-central1 \
--login-user=abm
Untuk mengaktifkan akses sudo
tanpa sandi bagi pengguna, ikuti langkah-langkah berikut di setiap
komputer node cluster:
Gunakan
sudo visudo
untuk membuka file sudoers guna mengedit:sudo visudo -f /etc/sudoers
Perintah
visudo
mengunci file sudoers untuk mencegah pengeditan serentak dan memvalidasi sintaksis file saat disimpan.Untuk pengguna login Anda, tambahkan entri ke file sudoers seperti berikut:
USERNAME ALL=(ALL) NOPASSWD: ALL
Tutup dan simpan file.
Untuk menjalankan perintah dengan hak istimewa pengguna login Anda, jalankan perintah berikut:
su - USERNAME
Untuk memverifikasi bahwa sandi tidak diperlukan bagi pengguna login Anda untuk menjalankan perintah
sudo
, jalankan perintahsudo
berikut:sudo ip a
Jaringan lanjutan
Anda mengonfigurasi fitur jaringan lanjutan di berbagai resource kustom setelah cluster dibuat. Untuk menggunakan resource kustom dan fitur jaringan terkait, Anda harus mengaktifkan jaringan lanjutan saat create 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
floating untuk fitur jaringan lanjutan, seperti
gateway NAT keluar 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 mendukung resource kustom.
Saat Anda mengonfigurasi load balancer yang dipaketkan dengan BGP, load balancing
data plane secara default menggunakan peer eksternal yang sama dengan yang ditentukan untuk
peering plane kontrol. Atau, Anda dapat mengonfigurasi load balancing
data plane secara terpisah, menggunakan resource kustom BGPLoadBalancer
dan
resource kustom BGPPeer
. Untuk 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 jangkauan 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 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 di setiap node cluster Anda. Kubelet bertanggung jawab untuk memantau container di node dan memastikannya tetap sehat. Jika diperlukan, kubelet akan membuat kueri dan mengambil image dari Container Registry.
Memperbarui konfigurasi kubelet secara manual dan membuatnya tetap disinkronkan di seluruh node cluster Anda mungkin sulit dilakukan. Lebih buruk lagi, perubahan konfigurasi kubelet manual di node 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 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 diubah, 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: 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:
- Node pekerja
spec.kubeletConfig
Contoh berikut menunjukkan kolom yang ditambahkan dengan nilai default-nya dalam
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 ini berlaku untuk semua node dalam kumpulan.
gcloud CLI
Flag berikut mengontrol operasi pull Container 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
Node pekerja
Cara menggunakan
Berikut beberapa pertimbangan untuk menyesuaikan pengambilan gambar:
Karena image ditarik secara berurutan secara default, pull image yang memerlukan waktu lama dapat menunda semua pull image lainnya yang dijadwalkan di node. Pengambilan image yang tertunda dapat memblokir proses upgrade (terutama saat image Google Distributed Cloud baru perlu di-deploy di node). Jika Anda terpengaruh oleh penundaan pengambilan gambar, Anda dapat menonaktifkan pengambilan gambar serialisasi untuk mengizinkan pengambilan 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 throttle lainnya. Nilai negatif tidak diizinkan.