VM-호스트 그룹 어피니티 구성

이 문서에서는 VM-호스트 어피니티를 사용하도록 VMware용 GKE 클러스터를 구성하는 방법의 예시를 보여줍니다.

VM-호스트 그룹 어피니티는 고가용성을 보장하기 위해 VMware용 GKE에서 제공하는 메커니즘 중 하나입니다. VM-호스트 그룹 어피니티를 사용하여 물리적 ESXi 호스트 그룹을 만듭니다. 그런 다음 VM 그룹을 호스트 그룹과 연결하도록 클러스터를 구성합니다.

예를 들어 하나의 노드 풀에서 모든 VM이 특정 호스트 그룹에서 실행되도록 구성할 수 있습니다. 그리고 두 번째 노드 풀의 모든 VM이 다른 호스트 그룹에서 실행되도록 구성할 수 있습니다. 그런 다음 각 노드 풀을 장애 도메인으로 취급할 수 있습니다. 장애 도메인을 구분하기 위해 여러 노드 풀의 VM에 라벨을 추가할 수 있습니다.

시작하기 전에

이 예시에서는 vSphere 환경에 최소 6개의 ESXi 호스트가 있어야 합니다.

호스트 그룹 만들기

vSphere 환경에서 2개 이상의 호스트 DRS 그룹을 만듭니다. 이 예시에서는 3개의 호스트가 있는 2개의 호스트 그룹이 적합합니다. 자세한 내용은 호스트 DRS 그룹 만들기를 참조하세요.

사용자 클러스터 만들기

이 섹션에서는 VM-호스트 그룹 어피니티를 사용하는 사용자 클러스터를 만드는 방법의 예를 제공합니다. 이 예시의 클러스터는 Controlplane V2를 사용합니다. 클러스터에는 고가용성 제어 영역이 포함되므로 3개의 제어 영역 노드가 있습니다. 제어 영역 노드 외에도 두 개의 노드 풀에 각각 3개씩 6개의 워커 노드가 있습니다. 모든 노드에는 고정 IP 주소가 사용됩니다.

먼저 사용자 클러스터 만들기(Controlplane V2)의 안내를 따르세요.

사용자 클러스터 구성 파일을 입력할 때 다음을 수행합니다.

  • 워커 노드에 노드 풀 2개를 지정합니다. 각 노드 풀에 replicas3으로 설정하고 기존 호스트 그룹의 이름을 제공합니다.

구성 파일 예시

다음은 IP 블록 파일의 예시와 사용자 클러스터 구성 파일의 일부입니다.

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"
...
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"
...

앞의 예시에서 이해가 필요한 중요 부분은 다음과 같습니다.

  • 워커 노드의 고정 IP 주소는 IP 블록 파일에 지정됩니다. 워커 노드가 6개뿐인데도 IP 블록 파일은 주소가 7개입니다. 추가 IP 주소는 클러스터 업그레이드, 업데이트, 자동 복구 중에 필요합니다.

  • 3개의 제어 영역 노드에 대한 고정 IP 주소는 사용자 클러스터 구성 파일의 network.controlPlaneIPBlock 섹션에 지정됩니다. 이 블록에는 추가 IP 주소가 필요하지 않습니다.

  • masterNode.replicas 필드가 3으로 설정되므로 제어 영역 노드가 3개가 됩니다.

  • 클러스터 컨트롤러는 worker-pool-1 노드 풀에 3개의 노드가 있는 VM DRS 그룹을 만듭니다. 또한 컨트롤러는 worker-pool-1의 노드가 hostgroup-1에 있는 호스트에서 실행되도록 하는 VM-호스트 어피니티 규칙을 만듭니다. worker-pool-1의 노드에는 failuredomain: "failuredomain-1" 라벨이 있습니다.

  • 클러스터 컨트롤러는 worker-pool-2 노드 풀에 3개의 노드가 있는 VM DRS 그룹을 만듭니다. 또한 컨트롤러는 worker-pool-2의 노드가 hostgroup-2에 있는 호스트에서 실행되도록 하는 VM-호스트 어피니티 규칙을 만듭니다. worker-pool-2의 노드에는 failuredomain: "failuredomain-2" 라벨이 있습니다.

사용자 클러스터 만들기(Controlplane V2)에 설명된 대로 사용자 클러스터를 계속 만듭니다.