Mengonfigurasi afinitas Grup host VM

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 replicas ke 3, dan berikan nama grup host yang ada di nodePools[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.hostGroups untuk setiap domain. Dalam file konfigurasi cluster pengguna, tentukan dua node pool untuk node pekerja, tetapkan replicas ke 3, dan tetapkan nodePools[i].topologyDomains untuk 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.controlPlaneIPBlock file konfigurasi cluster pengguna. Tidak ada alamat IP tambahan yang diperlukan dalam blok ini.

  • Kolom masterNode.replicas ditetapkan ke 3, 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 di worker-pool-1 akan berjalan di host yang ada di hostgroup-1. Node di worker-pool-1 memiliki label failuredomain: "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 di worker-pool-2 akan berjalan di host yang ada di hostgroup-2. Node di worker-pool-2 memiliki label failuredomain: "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.