vSphere 워크로드 클러스터에 대해 여러 가용성 영역을 사용하도록 설정하기 위해 CAPV(클러스터 API 제공자 vSphere)에 두 개의 새로운 CRD(사용자 리소스 정의)가 도입되었습니다.
VSphereFailureDomain
CRD는 지역/영역별 태그 지정 정보와 vSphere 데이터 센터, 클러스터, 호스트, 데이터스토어 정보를 포함하는 토폴로지 정의를 캡처합니다.VSphereDeploymentZone
CRD는 kubernetes 노드에 대한 배치 제약 조건 정보와 VSphereFailureDomain
연결을 캡처합니다.참고이 기능은 지원되지 않는 기술 미리보기 상태입니다. TKG 기능 상태를 참조하십시오.
이 항목의 구성은 Kubernetes 제어부 및 Worker 노드를 vSphere 개체, 즉 호스트와 계산 클러스터 및 데이터 센터에 분산합니다.
이 섹션의 예는 여러 계산 클러스터에 노드를 분산하여 여러 가용성 영역을 구현하는 방법을 보여 줍니다.
지역 및 영역을 정의하기 위한 사용자 지정 리소스를 생성합니다.
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
는 선택 사항입니다.
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.autoConfigure
및 spec.zone.autoConfigure
를 true
로 설정된 경우 이 단계를 건너뛸 수 있습니다.
클러스터를 배포하기 위한 다음 단계는 가용성 영역에 분산된 노드가 있는 워크로드 클러스터 배포를 참조하십시오.
이 섹션의 예는 워크로드 클러스터 노드를 단일 클러스터의 3개 호스트 그룹에 분산합니다.
vCenter Server 각 장애 도메인에 대해 호스트 그룹(예: rack1
) 및 VM 그룹(예: rack1-vm-group
)을 생성합니다.
또는 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
생성된 VM 그룹과 호스트 그룹 간에 선호도 규칙을 추가하여 VM 그룹의 VM이 생성된 호스트 그룹의 호스트에서 실행되도록 합니다.
vsphere-zones.yaml
파일에 VSphereFailureDomain
및 VSphereDeploymentZone
사용자 지정 리소스를 생성합니다.
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입니다.
CR 파일을 적용하여 VSphereFailureDomain
및 VSphereDeploymentZone
개체를 생성합니다.
kubectl apply -f vsphere-zones.yaml
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) 창에서 다음 단계를 수행할 수 있습니다.
지역 태그를 CR 정의에 나열된 모든 계산 클러스터에 연결합니다. 예를 들면 다음과 같습니다.
govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
각 계산 클러스터에 대한 전체 경로를 사용합니다.
영역 태그를 CR 정의에 나열된 모든 호스트 개체에 연결합니다. 예를 들면 다음과 같습니다.
govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
각 호스트에 대한 전체 경로를 사용합니다.
클러스터를 배포하기 위한 다음 단계는 가용성 영역에 분산된 노드가 있는 워크로드 클러스터 배포를 참조하십시오.
데이터 센터의 여러 계산 클러스터에 노드 분산 또는 단일 계산 클러스터의 여러 호스트에 노드 분산 단계를 수행한 후에는 해당 노드가 여러 가용성 영역에 분산된 워크로드 클러스터를 배포할 수 있습니다.
배포하려는 워크로드 클러스터에 대한 클러스터 구성 파일을 생성합니다.
VSPHERE_REGION
및 VSPHERE_ZONE
을 영역 및 영역 태그 범주(k8s-region
및 k8s-zone
)로 설정합니다.VSPHERE_AZ_0
, VSPHERE_AZ_1
, VSPHERE_AZ_2
로 설정합니다.VSPHERE_AZ_0
에 연결된 VsphereDeploymentZone은 md-0
으로 끝나는 시스템 배포가 배포되는 failureDomain입니다. 마찬가지로 VSPHERE_AZ_1
은 md-1
로 끝나는 시스템 배포가 배포되는 failureDomain이고, VSPHERE_AZ_2
는 md-2
로 끝나는 시스템 배포가 배포되는 failureDomain입니다.WORKER_MACHINE_COUNT
는 클러스터의 총 작업자 수를 설정합니다. 총 작업자 수는 지정된 AZ 수에 걸쳐 라운드 로빈 방식으로 분산됩니다.워크로드 클러스터를 vSphere 배포할 때 지정해야 하는 전체 옵션 목록은 구성 파일 변수 참조를 참조하십시오.
tanzu cluster create
를 실행하여 워크로드 클러스터를 생성합니다. 자세한 내용은 워크로드 클러스터 생성을 참조하십시오.