이 문서에서는 VM-호스트 어피니티를 사용하기 위해 Google Distributed Cloud 클러스터를 구성하는 방법의 예시를 보여줍니다.
VM-호스트 그룹 어피니티는 고가용성을 보장하기 위해 Google Distributed Cloud에서 제공하는 메커니즘 중 하나입니다. VM-호스트 그룹 어피니티를 사용하여 물리적 ESXi 호스트 그룹을 만듭니다. 그런 다음 VM 그룹을 호스트 그룹과 연결하도록 클러스터를 구성합니다.
예를 들어 하나의 노드 풀에서 모든 VM이 특정 호스트 그룹에서 실행되도록 구성할 수 있습니다. 또한 두 번째 노드 풀의 모든 VM이 다른 호스트 그룹에서 실행되도록 구성할 수 있습니다. 그런 다음 각 노드 풀을 장애 도메인으로 처리할 수 있습니다. 장애 도메인을 구분하기 위해 여러 노드 풀의 VM에 라벨을 추가할 수 있습니다.
시작하기 전에
이 예시에서는 vSphere 환경에 최소 6개의 ESXi 호스트가 있어야 합니다.
호스트 그룹 만들기
vSphere 환경에서 두 개 이상의 호스트 DRS 그룹을 만듭니다. 이 연습에서는 각각 3개의 호스트가 있는 2개의 호스트 그룹이 적합합니다. 자세한 내용은 호스트 DRS 그룹 만들기를 참조하세요.
사용자 클러스터 만들기
이 섹션에서는 VM-호스트 그룹 어피니티를 사용하는 사용자 클러스터를 만드는 방법의 예를 제공합니다. 이 예시의 클러스터는 Controlplane V2를 사용합니다. 클러스터에는 고가용성 제어 영역이 포함되므로 3개의 제어 영역 노드가 있습니다. 제어 영역 노드 외에도 두 개의 노드 풀에 각각 3개씩 6개의 워커 노드가 있습니다. 모든 노드에는 고정 IP 주소가 사용됩니다.
먼저 사용자 클러스터 만들기(Controlplane V2)의 안내를 따르세요.
사용자 클러스터 구성 파일을 입력할 때 다음을 수행합니다.
- 워커 노드에 2개의 노드 풀을 지정합니다. 각 노드 풀에
replicas
를3
으로 설정하고 기존 호스트 그룹의 이름을 제공합니다.
구성 파일 예시
다음은 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)에 설명된 대로 사용자 클러스터를 계속 만듭니다.