Dokumen ini memberikan contoh cara mengonfigurasi cluster Google Distributed Cloud untuk menggunakan afinitas host VM.
Afinitas grup host VM adalah salah satu mekanisme yang disediakan Google Distributed Cloud untuk memastikan ketersediaan tinggi. Dengan afinitas Grup host VM, Anda membuat grup host ESXi fisik. Kemudian, Anda mengonfigurasi cluster untuk mengaitkan grup VM dengan grup host.
Misalnya, Anda dapat mengonfigurasi semua VM dalam satu node pool untuk berjalan di grup host tertentu. Anda juga dapat mengonfigurasi semua VM di node pool kedua agar berjalan di grup host yang berbeda. Kemudian, Anda dapat memperlakukan setiap node pool sebagai domain kegagalan. Untuk membedakan domain kegagalan, Anda dapat menambahkan label ke VM di berbagai node pool.
Di cluster lanjutan,
afinitas Grup host VM didukung di versi 1.32.200 dan
versi 1.33 dan yang lebih baru. Jika cluster Anda menggunakan
domain topologi,
konfigurasi grup host di kolom
topologyDomains[i].compute.hostGroups
file konfigurasi infrastruktur vSphere, bukan kolom
nodePools[i].vsphere.hostgroups di file konfigurasi cluster pengguna.
Sebelum memulai
Untuk latihan ini, Anda harus memiliki minimal enam host ESXi di lingkungan vSphere.
Membuat grup host
Buat dua atau lebih grup DRS host di lingkungan vSphere Anda. Untuk latihan ini, dua grup host dengan masing-masing tiga host akan sesuai. Untuk mengetahui petunjuknya, lihat Membuat Grup DRS Host.
Membuat cluster pengguna
Bagian ini memberikan contoh cara membuat cluster pengguna yang menggunakan afinitas Grup host VM. Cluster dalam contoh ini menggunakan Controlplane V2. Cluster memiliki bidang kontrol ketersediaan tinggi, sehingga ada tiga node bidang kontrol. Selain node bidang kontrol, ada enam node pekerja: tiga di satu node pool dan tiga di node pool kedua. Semua node menggunakan alamat IP statis.
Mulai dengan mengikuti petunjuk di Membuat cluster pengguna (atau Membuat cluster pengguna untuk digunakan dengan domain topologi jika cluster Anda menggunakan domain topologi).
Saat Anda mengisi file konfigurasi:
- Tanpa domain topologi: Di file konfigurasi cluster pengguna, tentukan
dua node pool untuk node pekerja. Untuk setiap node pool, tetapkan
replicaske3, dan berikan nama grup host yang ada dinodePools[i].vsphere.hostgroups. - Dengan domain topologi: Dalam file konfigurasi infrastruktur vSphere, tentukan dua domain topologi dan berikan nama grup host yang ada di
topologyDomains[i].compute.hostGroupsuntuk setiap domain. Dalam file konfigurasi cluster pengguna, tentukan dua node pool untuk node pekerja, tetapkanreplicaske3, dan tetapkannodePools[i].topologyDomainsuntuk mengaitkan setiap node pool dengan domain topologi.
Contoh file konfigurasi
Contoh berikut menunjukkan cara mengonfigurasi afinitas Grup host VM tanpa domain topologi dan dengan domain topologi.
Tanpa domain topologi
Berikut adalah contoh file pemblokiran IP dan sebagian file konfigurasi cluster pengguna untuk cluster yang tidak menggunakan domain topologi.
user-ipblock.yaml
blocks:
- netmask: 255.255.255.0
gateway: 172.16.21.1
ips:
- ip: 172.16.21.2
- ip: 172.16.21.3
- ip: 172.16.21.4
- ip: 172.16.21.5
- ip: 172.16.21.6
- ip: 172.16.21.7
- ip: 172.16.21.8
user-cluster-yaml
apiVersion: v1
kind: UserCluster
...
network:
hostConfig:
dnsServers:
- "203.0.113.2"
- "198.51.100.2"
ntpServers:
- "216.239.35.4"
ipMode:
type: "static"
ipBlockFilePath: "user-ipblock.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.9"
hostname: "cp-vm-1"
- ip: "172.16.21.10"
hostname: "cp-vm-2"
- ip: "172.16.21.11"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: MetalLB
metalLB:
addressPools:
- name: "address-pool-1"
addresses:
- "172.16.21.30-172.16.21.39"
...
enableAdvancedCluster: true
enableControlplaneV2: true
masterNode:
cpus: 4
memoryMB: 8192
replicas: 3
nodePools:
- name: "worker-pool-1"
enableLoadBalancer: true
replicas: 3
vsphere:
hostgroups:
- "hostgroup-1"
labels:
failuredomain: "failuredomain-1"
- name: "worker-pool-2"
replicas: 3
vsphere:
hostgroups:
- "hostgroup-2"
labels:
failuredomain: "failuredomain-2"
...
Berikut adalah poin-poin penting yang perlu dipahami dalam contoh sebelumnya:
Alamat IP statis untuk node pekerja ditentukan dalam file blok IP. File blok IP memiliki tujuh alamat meskipun hanya ada enam node pekerja. Alamat IP tambahan diperlukan selama upgrade, update, dan perbaikan otomatis cluster.
Alamat IP statis untuk tiga node bidang kontrol ditentukan di bagian
network.controlPlaneIPBlockfile konfigurasi cluster pengguna. Tidak ada alamat IP tambahan yang diperlukan dalam blok ini.Kolom
masterNode.replicasditetapkan ke3, sehingga akan ada tiga node bidang kontrol.Pengontrol cluster akan membuat grup DRS VM yang memiliki tiga node di node pool
worker-pool-1. Pengontrol juga akan membuat aturan afinitas host VM yang memastikan node diworker-pool-1akan berjalan di host yang ada dihostgroup-1. Node diworker-pool-1memiliki labelfailuredomain: "failuredomain-1"Pengontrol cluster akan membuat grup DRS VM yang memiliki tiga node di node pool
worker-pool-2. Pengontrol juga akan membuat aturan afinitas host VM yang memastikan node diworker-pool-2akan berjalan di host yang ada dihostgroup-2. Node diworker-pool-2memiliki labelfailuredomain: "failuredomain-2"
Lanjutkan membuat cluster pengguna seperti yang dijelaskan dalam Membuat cluster pengguna.
Dengan domain topologi
Berikut adalah contoh sebagian dari file konfigurasi infrastruktur vSphere dan file konfigurasi cluster pengguna untuk cluster lanjutan yang menggunakan domain topologi.
vsphere-infra-config.yaml
Setiap domain topologi dalam file konfigurasi infrastruktur vSphere
menentukan grup host di topologyDomains[i].compute.hostGroups dan
label domain kegagalan di topologyDomains[i].topologyLabels.
apiVersion: vmware.cluster.gke.io/v1alpha1
kind: VSphereInfraConfig
metadata:
name: default
...
topologyDomains:
- name: "topology-domain-1"
topologyLabels:
"topology.kubernetes.io/zone": "zone-1"
compute:
vcenter: "vc01.example"
datacenter: "dc-1"
cluster: "cls-1"
resourcePool: "rp-1"
hostGroups:
- "hostgroup-1"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "vm-network-1"
gateway: "172.16.21.1"
dnsServers:
- "203.0.113.2"
- "198.51.100.2"
ntpServers:
- "216.239.35.4"
- name: "topology-domain-2"
topologyLabels:
"topology.kubernetes.io/zone": "zone-2"
compute:
vcenter: "vc01.example"
datacenter: "dc-1"
cluster: "cls-1"
resourcePool: "rp-1"
hostGroups:
- "hostgroup-2"
storage:
datastore: "vsanDatastore"
network:
vsphereNetwork: "vm-network-1"
gateway: "172.16.21.1"
dnsServers:
- "203.0.113.2"
- "198.51.100.2"
ntpServers:
- "216.239.35.4"
user-cluster.yaml
Dalam contoh file konfigurasi cluster pengguna berikut, bagian
nodePools[i].vsphere dihapus, dan setiap node pool mereferensikan domain
topologinya di nodePools[i].topologyDomains.
Pengontrol cluster membuat grup DRS VM dan aturan afinitas host VM untuk
worker-pool-1 (di topology-domain-1) sehingga nodenya berjalan di host di
hostgroup-1 dan menerima label topology.kubernetes.io/zone: "zone-1".
Demikian pula, pengontrol cluster membuat grup DRS VM dan aturan afinitas host VM untuk worker-pool-2 (di topology-domain-2) sehingga nodenya berjalan di host di hostgroup-2 dan menerima label topology.kubernetes.io/zone: "zone-2".
apiVersion: v1 kind: UserCluster ... enableAdvancedCluster: true enableControlplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 3 topologyDomains: - "topology-domain-1" nodePools: - name: "worker-pool-1" replicas: 3 osImageType: "ubuntu_cgv2" topologyDomains: - "topology-domain-1" - name: "worker-pool-2" replicas: 3 osImageType: "ubuntu_cgv2" topologyDomains: - "topology-domain-2" ...
Lanjutkan untuk membuat cluster pengguna untuk digunakan dengan domain topologi.