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

이 문서에서는 VM-호스트 어피니티를 사용하기 위해 Google Distributed Cloud 클러스터를 구성하는 방법의 예시를 보여줍니다.

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

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

고급 클러스터에서 VM-호스트 그룹 어피니티를 사용할 수 없습니다.

시작하기 전에

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

호스트 그룹 만들기

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

사용자 클러스터 만들기

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

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

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

  • 워커 노드에 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" 라벨이 있습니다.

사용자 클러스터 만들기에 설명된 대로 사용자 클러스터 만들기를 계속합니다.