여러 가용성 영역에 워크로드 클러스터 배포(vSphere 기술 미리보기)

vSphere 워크로드 클러스터에 대해 여러 가용성 영역을 사용하도록 설정하기 위해 CAPV(클러스터 API 제공자 vSphere)에 두 개의 새로운 CRD(사용자 리소스 정의)가 도입되었습니다.

  • VSphereFailureDomain CRD는 지역/영역별 태그 지정 정보와 vSphere 데이터 센터, 클러스터, 호스트, 데이터스토어 정보를 포함하는 토폴로지 정의를 캡처합니다.
  • VSphereDeploymentZone CRD는 kubernetes 노드에 대한 배치 제약 조건 정보와 VSphereFailureDomain 연결을 캡처합니다.
참고

이 기능은 지원되지 않는 기술 미리보기 상태입니다. TKG 기능 상태를 참조하십시오.

이 항목의 구성은 Kubernetes 제어부 및 Worker 노드를 vSphere 개체, 즉 호스트와 계산 클러스터 및 데이터 센터에 분산합니다.

데이터 센터의 여러 계산 클러스터에 노드 분산

이 섹션의 예는 여러 계산 클러스터에 노드를 분산하여 여러 가용성 영역을 구현하는 방법을 보여 줍니다.

  1. 지역 및 영역을 정의하기 위한 사용자 지정 리소스를 생성합니다.

    • spec.region, spec.zone, spec.topology 아래의 모든 항목은 vCenter 구성한 항목과 일치해야 합니다.
    • VSphereDeploymentZone 개체의 경우 spec.failuredomain 값이 VSphereFailureDomain 정의의 metadata.name 값 중 하나와 일치해야 합니다.
    • spec.server 개체의 VSphereDeploymentZone 값은 설치 관리자 인터페이스 IaaS 제공자 창 또는 관리 클러스터 구성 파일의 VSPHERE_SERVER 설정에 VSPHERE_SERVER 입력된 vCenter 서버 주소(IP 또는 FQDN)와 일치해야 합니다.
    • metadata.name 값은 모두 소문자여야 합니다.

    워크로드 클러스터에 대한 Kubernetes 노드를 데이터 센터 내의 여러 계산 클러스터에 분산하려면 사용자 지정 리소스를 생성해야 합니다. 이 예에서는 us-west-1a, us-west-1b, us-west-1c라는 3개의 배포 영역을 설명합니다. 각 배포 영역은 네트워크 및 스토리지 매개 변수가 있는 계산 클러스터입니다.

    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1a
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1a
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       datastore: ds-c1
       networks:
       - net1
       - net2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1b
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1b
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster2
       datastore: ds-c2
       networks:
       - net3
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1c
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1c
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster3
       datastore: ds-c3
       networks:
       - net4
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1a
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1a
     placementConstraint:
       resourcePool: pool1
       folder: foo
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1b
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1b
     placementConstraint:
       resourcePool: pool2
       folder: bar
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1c
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1c
     placementConstraint:
       resourcePool: pool3
       folder: baz
    

    여기서 VSPHERE_SERVER는 vCenter Server의 IP 주소 또는 FQDN입니다.

    서로 다른 계산 클러스터에 이름이 동일한 리소스 풀이 있는 경우 VSphereDeploymentZone 개체의 spec.placementConstraint.resourcePool을 이름뿐만 아니라 전체 리소스 경로로 설정합니다.

    참고

    VsphereDeploymentZone 개체의 경우 spec.placementConstraint는 선택 사항입니다.

  2. vSphere 개체에 태그를 지정합니다.

    첫 번째 VSphereFailureDomain CR(us-west-1a)에서 govc를 사용하여 데이터 센터 dc0 및 계산 클러스터 cluster1을 적용합니다.

    govc tags.attach -c k8s-region us-west-1 /dc0
    
    govc tags.attach -c k8s-zone us-west-1a /dc0/host/cluster1
    

    마찬가지로 다른 계산 클러스터에 대해 다음 태그 지정 작업을 수행합니다.

    govc tags.attach -c k8s-zone us-west-1b /dc0/host/cluster2
    
    govc tags.attach -c k8s-zone us-west-1c /dc0/host/cluster3
    

    VSphereFailureDomain CR을 생성할 때 spec.region.autoConfigurespec.zone.autoConfiguretrue로 설정된 경우 이 단계를 건너뛸 수 있습니다.

클러스터를 배포하기 위한 다음 단계는 가용성 영역에 분산된 노드가 있는 워크로드 클러스터 배포를 참조하십시오.

단일 계산 클러스터의 여러 호스트에 노드 분산

이 섹션의 예는 워크로드 클러스터 노드를 단일 클러스터의 3개 호스트 그룹에 분산합니다.

  1. vCenter Server 각 장애 도메인에 대해 호스트 그룹(예: rack1) 및 VM 그룹(예: rack1-vm-group)을 생성합니다.

    • 구성(Configure) > VM/호스트 그룹(VM/Host Groups) > 추가(Add)…에서 호스트 및 VM 그룹을 생성합니다.
    • 호스트 그룹의 수는 사용하려는 가용성 영역 수와 일치해야 합니다.
    • VM 그룹을 생성하려면 더미 VM을 생성하여 그룹 멤버로 추가해야 할 수 있습니다.
    • 또는 govc를 사용하여 더미 VM을 생성하지 않고도 다음과 유사한 명령을 실행하여 호스트 및 VM 그룹을 생성할 수 있습니다.

      govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1 -host esx-01a.corp.tanzu esx-02a.corp.tanzu
      
      govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1-vm-group -vm
      
  2. 생성된 VM 그룹과 호스트 그룹 간에 선호도 규칙을 추가하여 VM 그룹의 VM이 생성된 호스트 그룹의 호스트에서 실행되도록 합니다.

    • 유형(Type)가상 시스템을 호스트로(Virtual Machines to Hosts)로 설정하고 그룹 내 호스트에서 실행해야 함 규칙을 포함합니다.
  3. vsphere-zones.yaml 파일에 VSphereFailureDomainVSphereDeploymentZone 사용자 지정 리소스를 생성합니다.

    • spec.region, spec.zone, spec.topology 아래의 모든 항목은 vCenter 구성한 항목과 일치해야 합니다.
    • VSphereDeploymentZone 개체의 경우 spec.failuredomain 값이 VSphereFailureDomain 정의의 metadata.name 값 중 하나와 일치해야 합니다.
    • spec.server 개체의 VSphereDeploymentZone 값은 설치 관리자 인터페이스 IaaS 제공자 창 또는 관리 클러스터 구성 파일의 VSPHERE_SERVER 설정에 VSPHERE_SERVER 입력된 vCenter 서버 주소(IP 또는 FQDN)와 일치해야 합니다.
    • metadata.name 값은 모두 소문자여야 합니다.

    예를 들어, 다음 vsphere-zones.yaml 파일은 영역 room1 내의 3개의 영역을 정의합니다. 여기서 각 영역은 동일한 클러스터 내의 호스트 랙입니다.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack1
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack1
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack1-vm-group
         hostGroupName: rack1
       datastore: ds-r1
       networks:
       - net1
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack2
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack2
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack2-vm-group
         hostGroupName: rack2
       datastore: ds-r2
       networks:
       - net2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack3
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack3
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack3-vm-group
         hostGroupName: rack3
       datastore: ds-c3
       networks:
       - net3
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack1
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack1
     placementConstraint:
       resourcePool: pool1
       folder: foo
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack2
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack2
     placementConstraint:
       resourcePool: pool2
       folder: bar
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack3
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack3
     placementConstraint:
       resourcePool: pool3
       folder: baz
    

    여기서 VSPHERE_SERVER는 vCenter Server의 IP 주소 또는 FQDN입니다.

  4. CR 파일을 적용하여 VSphereFailureDomainVSphereDeploymentZone 개체를 생성합니다.

    kubectl apply -f vsphere-zones.yaml
    
  5. govc를 사용하여 지역 및 영역에 대한 태그 범주 및 태그를 생성하고, VSphereFailureDomain CR에 나열된 계산 클러스터 및 호스트에 적용합니다.

    • 계산 클러스터에 대한 지역 태그 범주 및 태그를 생성합니다. 예를 들면 다음과 같습니다.
    govc tags.category.create -t ClusterComputeResource k8s-region
    
    govc tags.create -c k8s-region room1
    

    모든 지역에 대해 반복합니다.

    govc tags.create -c k8s-region REGION
    
    • 호스트에 대한 영역 태그 범주 및 태그를 생성합니다. 예를 들면 다음과 같습니다.
    govc tags.category.create -t HostSystem k8s-zone
    
    govc tags.create -c k8s-zone rack1
    

    모든 영역에 대해 반복합니다.

    govc tags.create -c k8s-zone ZONE
    

    또는 이 에서 태그 작업을 수행하고 vCenter 있는 태그 및 사용자 지정 특성(Tags & Custom Attributes) 창에서 다음 단계를 수행할 수 있습니다.

  6. 지역 태그를 CR 정의에 나열된 모든 계산 클러스터에 연결합니다. 예를 들면 다음과 같습니다.

    govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
    

    각 계산 클러스터에 대한 전체 경로를 사용합니다.

  7. 영역 태그를 CR 정의에 나열된 모든 호스트 개체에 연결합니다. 예를 들면 다음과 같습니다.

    govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
    

    각 호스트에 대한 전체 경로를 사용합니다.

클러스터를 배포하기 위한 다음 단계는 가용성 영역에 분산된 노드가 있는 워크로드 클러스터 배포를 참조하십시오.

가용성 영역에 분산된 노드가 있는 워크로드 클러스터 배포

데이터 센터의 여러 계산 클러스터에 노드 분산 또는 단일 계산 클러스터의 여러 호스트에 노드 분산 단계를 수행한 후에는 해당 노드가 여러 가용성 영역에 분산된 워크로드 클러스터를 배포할 수 있습니다.

  1. 배포하려는 워크로드 클러스터에 대한 클러스터 구성 파일을 생성합니다.

    • 위 예제에서 VSPHERE_REGIONVSPHERE_ZONE을 영역 및 영역 태그 범주(k8s-regionk8s-zone)로 설정합니다.
    • 시스템을 배포해야 하는 VsphereDeploymentZone 개체의 이름으로 VSPHERE_AZ_0, VSPHERE_AZ_1, VSPHERE_AZ_2로 설정합니다.
    • VSPHERE_AZ_0에 연결된 VsphereDeploymentZone은 md-0으로 끝나는 시스템 배포가 배포되는 failureDomain입니다. 마찬가지로 VSPHERE_AZ_1md-1로 끝나는 시스템 배포가 배포되는 failureDomain이고, VSPHERE_AZ_2md-2로 끝나는 시스템 배포가 배포되는 failureDomain입니다.
    • AZ 구성이 정의되지 않은 경우 장애 도메인 없이 해당 시스템 배포가 배포됩니다.
    • WORKER_MACHINE_COUNT는 클러스터의 총 작업자 수를 설정합니다. 총 작업자 수는 지정된 AZ 수에 걸쳐 라운드 로빈 방식으로 분산됩니다.

    워크로드 클러스터를 vSphere 배포할 때 지정해야 하는 전체 옵션 목록은 구성 파일 변수 참조를 참조하십시오.

  2. tanzu cluster create를 실행하여 워크로드 클러스터를 생성합니다. 자세한 내용은 워크로드 클러스터 생성을 참조하십시오.

    • 클러스터 생성 프로세스 중에 해당 VM 및 기타 리소스가 vCenter 표시되는 것을 볼 수 있습니다.
    • VM 그룹을 생성하기 위해 vCenter 더미 VM을 생성한 경우 클러스터가 실행되면 VM 그룹에서 VM을 삭제하거나 제거할 수 있습니다.
check-circle-line exclamation-circle-line close-line
Scroll to top icon