다음 섹션에서는 독립형 관리 클러스터에서 vSphere 관련 기능을 사용하도록 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다. 이 기능은 클러스터의 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격에서 완전히 구성할 수 없습니다.
구성 파일 및 개체 규격을 사용하여 vSphere 워크로드 클러스터를 구성하는 방법에 대한 자세한 내용은 다음을 참조하십시오.
각 Kubernetes 버전에 단일 사용자 지정 OVA 이미지를 사용하여 하나의 운영 체제에 클러스터를 배포하는 경우, OVA를 vSphere로 가져온 다음 --tkr
옵션을 사용하여 tanzu cluster create
를 지정합니다.
그러나, 동일한 Kubernetes 버전에 여러 사용자 지정 OVA 이미지를 사용하는 경우에는 --tkr
값이 모호합니다. 이 문제는 동일한 Kubernetes 버전의 OVA가 있을 때 발생합니다.
make build-node-ova-vsphere-ubuntu-1804
, make build-node-ova-vsphere-photon-3
, make build-node-ova-vsphere-rhel-7
).이러한 모호성을 해결하려면 tanzu cluster create
실행하기 전에 VSPHERE_TEMPLATE
옵션을 원하는 OVA 이미지로 설정합니다.
OVA 템플릿 이미지 이름이 고유한 경우 VSPHERE_TEMPLATE
를 이미지 이름으로만 설정합니다.
여러 이미지가 동일한 이름을 공유하는 경우 VSPHERE_TEMPLATE
를 vCenter에 있는 이미지의 전체 인벤토리 경로로 설정합니다. 이 경로는 /MY-DC/vm/MY-FOLDER-PATH/MY-IMAGE
형식을 따릅니다. 여기서:
MY-DC
는 OVA 템플릿 이미지가 포함된 데이터 센터입니다.MY-FOLDER-PATH
는 vCenter VM 및 템플릿 보기에 표시된 것처럼 데이터 센터의 이미지에 대한 경로입니다.MY-IMAGE
는 이미지 이름입니다.예:
VSPHERE_TEMPLATE: "/TKG_DC/vm/TKG_IMAGES/ubuntu-2004-kube-v1.29.9-vmware.1"
이미지의 전체 vCenter 인벤토리 경로를 수동으로 확인하거나 govc
CLI를 사용할 수 있습니다.
govc
를 설치합니다. 설치 지침은 GitHub의 govmomi 저장소를 참조하십시오.govc
의 환경 변수를 설정합니다.
export GOVC_USERNAME=VCENTER-USERNAME
export GOVC_PASSWORD=VCENTER-PASSWORD
export GOVC_URL=VCENTER-URL
export GOVC_INSECURE=1
govc find / -type m
을 실행하고 출력에서 이미지 이름을 찾습니다. 이는 전체 인벤토리 경로별로 개체를 표시합니다.사용자 지정 OVA 이미지에 대한 자세한 내용은 시스템 이미지 빌드를 참조하십시오.
워크로드 클러스터의 지역과 영역을 지정하여 vSphere CSI(클라우드 스토리지 인터페이스)의 구성된 지역 및 영역 태그와 통합할 수 있습니다. 여러 영역에 걸쳐 있는 클러스터의 경우 Worker 노드가 스토리지 포드가 없는 영역(예: 통신 RAN(Radio Access Network))에서 실행되는 경우에도 공유 스토리지를 찾고 사용할 수 있습니다.
vSphere CSI와 공유 스토리지를 사용하도록 설정하는 지역 및 영역 태그를 사용하여 워크로드 클러스터를 배포하려면 다음을 수행합니다.
vCenter Server에서 태그를 생성합니다.
k8s-region
및 k8s-zone
.다음 테이블에 나와 있는 것처럼 vSphere 태그 생성 및 편집에 따라 데이터 센터의 지역 및 영역 범주 내에 태그를 생성합니다.
범주 | 태그 |
---|---|
k8s-zone |
zone-a zone-b zone-c |
k8s-region |
region-1 |
테이블에 표시된 vSphere 것처럼 vSphere 태그 할당 또는 제거에 따라 클러스터와 데이터 센터에 해당하는 태그를 생성합니다.
vSphere 개체 | 태그 |
datacenter |
region-1 |
cluster1 |
zone-a |
cluster2 |
zone-b |
cluster3 |
zone-c |
vSphere 워크로드 클러스터의 CSI 드라이버에 사용자 지정 지역 및 영역을 사용하도록 설정하려면 클러스터 구성 파일의 VSPHERE_REGION
및 VSPHERE_ZONE
변수를 위 태그로 설정합니다. 예:
VSPHERE_REGION: region-1
VSPHERE_ZONE: zone-a
Tanzu CLI가 이러한 변수 세트를 사용하여 워크로드 클러스터를 생성할 때 각 클러스터 노드에 토폴로지 키 failure-domain.beta.kubernetes.io/zone
및 failure-domain.beta.kubernetes.io/region
으로 레이블을 지정합니다.
계획 기반 또는 TKC 클러스터 생성에 설명된 대로 tanzu cluster create
를 실행하여 워크로드 클러스터를 생성합니다.
클러스터를 생성한 후 kubectl
컨텍스트를 클러스터로 설정하면 다음 중 하나를 수행하여 지역 및 영역 레이블을 확인할 수 있습니다.
kubectl get nodes -L failure-domain.beta.kubernetes.io/zone -L failure-domain.beta.kubernetes.io/region
을 실행하고 출력이 클러스터 노드를 표시하는지 확인합니다.
kubectl get csinodes -o jsonpath='{range .items\[\*\]}{.metadata.name} {.spec}{"\\n"}{end}'
를 실행하고 지역과 영역이 vsphere-csi
를 사용하도록 설정되어 있는지 확인합니다.
vSphere CSI 구성에 대한 자세한 내용은 vSphere CSI 드라이버 - 토폴로지를 사용하여 배포를 참조하십시오.
Tanzu Kubernetes Grid는 여러 대상 플랫폼 계정에서 워크로드 클러스터를 실행할 수 있습니다. 예를 들어 서로 다른 팀 간에 클라우드 사용량을 분할하거나 프로덕션, 스테이징, 개발 워크로드에 서로 다른 보안 프로필을 적용할 수 있습니다.
워크로드 클러스터를 관리 클러스터를 배포하는 데 사용되는 계정과 다른 대체 vSphere 계정에 배포하려면 다음을 수행합니다.
관리 클러스터에 kubectl
컨텍스트를 설정합니다.
kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
여기서 MY-MGMT-CLUSTER
는 관리 클러스터의 이름입니다.
다음 내용으로 secret.yaml
파일을 생성합니다.
apiVersion: v1
kind: Secret
metadata:
name: SECRET-NAME
namespace: CAPV-MANAGER-NAMESPACE
stringData:
username: VSPHERE-USERNAME
password: VSPHERE-PASSWORD
형식 설명:
SECRET-NAME
은 클라이언트 암호에 제공하는 이름입니다.CAPV-MANAGER-NAMESPACE
는 capv-manager
포드가 실행 중인 네임스페이스입니다. 기본값: capv-system
.VSPHERE-USERNAME
및 VSPHERE-PASSWORD
는 대체 vSphere 계정에 액세스할 수 있는 로그인 자격 증명입니다.파일을 사용하여 Secret
개체를 생성합니다.
kubectl apply -f secret.yaml
다음 내용으로 identity.yaml
파일을 생성합니다.
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: VSphereClusterIdentity
metadata:
name: EXAMPLE-IDENTITY
spec:
secretName: SECRET-NAME
allowedNamespaces:
selector:
matchLabels: {}
형식 설명:
EXAMPLE-IDENTITY
는 VSphereClusterIdentity
개체에 사용할 이름입니다.SECRET-NAME
은 위의 클라이언트 암호에 지정한 이름입니다.파일을 사용하여 VsphereClusterIdentity
개체를 생성합니다.
kubectl apply -f identity.yaml
이제 관리 클러스터가 워크로드 클러스터를 대체 계정에 배포할 수 있습니다.
계정에 워크로드 클러스터를 배포하려면 다음을 수행합니다.
tanzu cluster create --dry-run
을 실행하여 클러스터 매니페스트를 생성합니다.
매니페스트에서 VSphereCluster
정의를 편집하여 위에서 생성한 VSphereClusterIdentity
개체의 spec.identityRef.name
값을 EXAMPLE-IDENTITY
로 설정합니다.
...
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: VSphereCluster
metadata:
name: new-workload-cluster
spec:
identityRef:
kind: VSphereClusterIdentity
name: EXAMPLE-IDENTITY
...
kubectl apply -f my-cluster-manifest.yaml
을 실행하여 워크로드 클러스터를 생성합니다.
워크로드 클러스터를 생성한 후 대체 계정 자격 증명을 사용하여 vSphere 로그인하면 실행 중인 것으로 표시됩니다.
자세한 내용은 Cluster API 제공자 vSphere 저장소의 ID 관리를 참조하십시오.
참고이 기능은 예상대로 작동하지 않습니다. 워크로드 클러스터의 스토리지 정책의 기반으로 데이터스토어 클러스터의 여러 데이터스토어에 태그를 지정하는 경우 워크로드 클러스터는 데이터스토어 중 하나만 사용합니다.
워크로드 클러스터가 단일 데이터스토어 대신 데이터스토어 클러스터를 사용하도록 설정하려면 다음과 같이 데이터스토어 클러스터 내의 모든 데이터스토어를 대상으로 하는 스토리지 정책을 설정합니다.
태그를 생성하고 관련 데이터스토어와 연결합니다.
Datastore
가 있는지 확인합니다.태그 기반 배치를 위해 VM 스토리지 정책 생성에 따라 태그 기반 스토리지 정책을 생성합니다.
클러스터 구성 파일에서 다음을 수행합니다.
VSPHERE_STORAGE_POLICY_ID
를 이전 단계에서 생성한 스토리지 정책의 이름으로 설정합니다.VSPHERE_DATASTORE
가 설정되지 않았는지 확인합니다. VSPHERE_DATASTORE
설정은 스토리지 정책 설정을 재정의합니다.Windows 및 Linux 기반 Worker 노드가 모두 있는 다중 OS 워크로드 클러스터를 배포하려면 사용자 지정 Windows 시스템 이미지를 생성하고, Windows 워크로드 클러스터를 배포한 다음, Linux MachineDeployment
를 추가하여 Windows 전용 워크로드 클러스터를 다중 OS 클러스터로 변환합니다.
다중 OS 클러스터는 Windows 및 Linux 워크로드를 모두 호스팅할 수 있으며 해당 클러스터가 속한 Worker 노드에서 Linux 기반 TKG 구성 요소를 실행할 수 있습니다.
YAML 파일(예: win-osimage.yaml
)을 생성하여 Windows 시스템 이미지를 생성할 때 템플릿을 가리키는 OSImage를 관리 클러스터에 추가합니다.
다음 샘플 YAML 파일을 사용할 수 있습니다. spec.image.ref.template
값을 생성한 Windows 템플릿의 위치로 변경합니다. 경로는 vSphere 환경에 따라 다릅니다.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: OSImage
metadata:
name: v1.26.8---vmware.2-tkg.1-windows
spec:
image:
ref:
template: /dc0/vm/windows-2019-kube-v1.26.8
version: v1.26.8+vmware.2-tkg.1-windows
type: ova
kubernetesVersion: v1.26.8+vmware.2
os:
arch: amd64
name: windows
type: windows
version: "2019"
kubectl apply -f win-osimage.yaml
을 실행하여 OSImage를 추가합니다.
TKR 확인 및 Webhook 유효성 검사가 성공적으로 수행되고 Windows 구성 요소를 설치할 수 있도록 MultiOS 클러스터에 사용하려는 TKR에 새 OSImage 및 tkg-windows
패키지를 추가합니다.
다음 명령을 사용하여 TKR을 편집하여 OSImage를 spec.osImages
에서 새 항목으로 추가하고, tkg-windows
패키지를 spec.bootstrapPackages
에서 새 항목으로 추가합니다.
$ kubectl edit tkr v1.26.8---vmware.2-tkg.1
tkg-windows
패키지는 tanzu package available list tkg-windows.tanzu.vmware.com
과 함께 공식 저장소에서 찾을 수 있습니다. 다음은 작동하는 TKr의 예입니다.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
name: v1.26.8---vmware.2-tkg.1
spec:
bootstrapPackages:
# Add the tkg-windows package to this list AND keep the other packages already listed here under bootstrapPackages.
- name: tkg-windows.tanzu.vmware.com.0.30.2+vmware.1
osImages:
# Add the Windows OSImage name to this list AND keep the other images already listed here under osImages.
- name: v1.26.8---vmware.2-tkg.1-windows
참고TKR 컨트롤러 관리자가 TKR 컨트롤러 관리자에 의해 이 편집을 덮어쓰지 않습니다. TKR 컨트롤러 관리자가 TKG 저장소의 TKR을 내부 저장소로 지속적으로 조정하더라도 조정으로 인해 편집이 수행되지 않고 누락된 새 TKR만 생성됩니다.
MultiOS 클러스터 구성 파일에 다음과 같은 매개 변수가 있는지 확인합니다.
IS_WINDOWS_WORKLOAD_CLUSTER: "true"
다음 명령을 실행하여 클래스 기반 클러스터 개체 규격을 생성합니다.
tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
여기서:
WINDOWS-CLUSTER
는 Windows 클러스터의 이름입니다.CLUSTER-CONFIG
는 구성 파일의 이름입니다.새 tkg-worker
시스템 배포 클래스를 my-cluster-spec.yaml
에 있는 클러스터 개체에 추가합니다. TKG가 OSImage
개체를 검색할 수 있도록 주석이 올바른지 확인합니다.
다음 예와 유사한 spec.workers.machineDeployments
에 새 tkg-worker
규격을 추가할 수 있습니다.
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
name: WINDOWS-CLUSTER
spec:
workers:
machineDeployments:
- class: tkg-worker
metadata:
annotations:
run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=photon
name: md-0-l
replicas: 1
- class: tkg-worker-windows
metadata:
annotations:
run.tanzu.vmware.com/resolve-os-image: image-type=ova,os-name=windows
name: md-0
replicas: 1
다음 명령을 실행하여 다중 OS 클러스터를 배포합니다.
tanzu cluster create my-cluster -f my-cluster-spec.yaml
노드는 잘 알려진 레이블, 주석, 테인트에서 OS 정보로 레이블이 지정되고 테인트되어 있습니다.
참고다중 OS 워크로드 클러스터의 백업 및 복원은 지원되지 않습니다.
Windows 또는 MultiOS 클러스터를 배포하는 경우 분산 포트 그룹에 특정 보안 정책이 Reject
로 설정되어 있는지 확인해야 합니다. 예를 들어 비규칙 모드가 Accept
로 설정된 경우 노드는 Ready
및 NotReady
상태를 번갈아 사용할 수 있습니다.
vSphere Client Windows 노드에서 사용하는 네트워크를 선택하고 가상 Distributed Switch(virtual Distributed Switch) > 분산 포트 그룹 보안 정책(Distributed Portgroup Security Policy) 설정으로 이동한 후 이러한 정책을 Reject
로 설정합니다.