vSphere에서 클러스터

다음 섹션에서는 독립형 관리 클러스터에서 vSphere 관련 기능을 사용하도록 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다. 이 기능은 클러스터의 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격에서 완전히 구성할 수 없습니다.

구성 파일 및 개체 규격을 사용하여 vSphere 워크로드 클러스터를 구성하는 방법에 대한 자세한 내용은 다음을 참조하십시오.

사용자 지정 OVA 이미지를 사용하여 클러스터 배포

각 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).
  • 이름은 동일하지만 서로 다른 vCenter 폴더에 상주합니다.

이러한 모호성을 해결하려면 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를 사용할 수 있습니다.

    1. govc를 설치합니다. 설치 지침은 GitHub의 govmomi 저장소를 참조하십시오.
    2. vCenter에 액세스하려면 govc의 환경 변수를 설정합니다.
      • export GOVC_USERNAME=VCENTER-USERNAME
      • export GOVC_PASSWORD=VCENTER-PASSWORD
      • export GOVC_URL=VCENTER-URL
      • export GOVC_INSECURE=1
    3. govc find / -type m을 실행하고 출력에서 이미지 이름을 찾습니다. 이는 전체 인벤토리 경로별로 개체를 표시합니다.

사용자 지정 OVA 이미지에 대한 자세한 내용은 시스템 이미지 빌드를 참조하십시오.

CSI의 지역 및 영역 태그를 사용하여 클러스터 배포

워크로드 클러스터의 지역과 영역을 지정하여 vSphere CSI(클라우드 스토리지 인터페이스)의 구성된 지역 및 영역 태그와 통합할 수 있습니다. 여러 영역에 걸쳐 있는 클러스터의 경우 Worker 노드가 스토리지 포드가 없는 영역(예: 통신 RAN(Radio Access Network))에서 실행되는 경우에도 공유 스토리지를 찾고 사용할 수 있습니다.

vSphere CSI와 공유 스토리지를 사용하도록 설정하는 지역 및 영역 태그를 사용하여 워크로드 클러스터를 배포하려면 다음을 수행합니다.

  1. vCenter Server에서 태그를 생성합니다.

    1. 태그 범주 생성 및 편집에 따라 vCenter Server에 태그 범주를 생성합니다. 예: k8s-regionk8s-zone.
    2. 다음 테이블에 나와 있는 것처럼 vSphere 태그 생성 및 편집에 따라 데이터 센터의 지역 및 영역 범주 내에 태그를 생성합니다.

      범주 태그
      k8s-zone zone-a
      zone-b
      zone-c
      k8s-region region-1
  2. 테이블에 표시된 vSphere 것처럼 vSphere 태그 할당 또는 제거에 따라 클러스터와 데이터 센터에 해당하는 태그를 생성합니다.

    vSphere 개체 태그
    datacenter region-1
    cluster1 zone-a
    cluster2 zone-b
    cluster3 zone-c
  3. vSphere 워크로드 클러스터의 CSI 드라이버에 사용자 지정 지역 및 영역을 사용하도록 설정하려면 클러스터 구성 파일의 VSPHERE_REGIONVSPHERE_ZONE 변수를 위 태그로 설정합니다. 예:

    VSPHERE_REGION: region-1
    VSPHERE_ZONE: zone-a
    

    Tanzu CLI가 이러한 변수 세트를 사용하여 워크로드 클러스터를 생성할 때 각 클러스터 노드에 토폴로지 키 failure-domain.beta.kubernetes.io/zonefailure-domain.beta.kubernetes.io/region으로 레이블을 지정합니다.

  4. 계획 기반 또는 TKC 클러스터 생성에 설명된 대로 tanzu cluster create를 실행하여 워크로드 클러스터를 생성합니다.

  5. 클러스터를 생성한 후 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 드라이버 - 토폴로지를 사용하여 배포를 참조하십시오.

서로 다른 vSphere 계정의 클러스터

Tanzu Kubernetes Grid는 여러 대상 플랫폼 계정에서 워크로드 클러스터를 실행할 수 있습니다. 예를 들어 서로 다른 팀 간에 클라우드 사용량을 분할하거나 프로덕션, 스테이징, 개발 워크로드에 서로 다른 보안 프로필을 적용할 수 있습니다.

워크로드 클러스터를 관리 클러스터를 배포하는 데 사용되는 계정과 다른 대체 vSphere 계정에 배포하려면 다음을 수행합니다.

  1. 관리 클러스터에 kubectl 컨텍스트를 설정합니다.

    kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
    

    여기서 MY-MGMT-CLUSTER는 관리 클러스터의 이름입니다.

  2. 다음 내용으로 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-NAMESPACEcapv-manager 포드가 실행 중인 네임스페이스입니다. 기본값: capv-system.
    • VSPHERE-USERNAMEVSPHERE-PASSWORD는 대체 vSphere 계정에 액세스할 수 있는 로그인 자격 증명입니다.
  3. 파일을 사용하여 Secret 개체를 생성합니다.

    kubectl apply -f secret.yaml
    
  4. 다음 내용으로 identity.yaml 파일을 생성합니다.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereClusterIdentity
    metadata:
      name: EXAMPLE-IDENTITY
    spec:
      secretName: SECRET-NAME
      allowedNamespaces:
        selector:
          matchLabels: {}
    

    형식 설명:

    • EXAMPLE-IDENTITYVSphereClusterIdentity 개체에 사용할 이름입니다.
    • SECRET-NAME은 위의 클라이언트 암호에 지정한 이름입니다.
  5. 파일을 사용하여 VsphereClusterIdentity 개체를 생성합니다.

    kubectl apply -f identity.yaml
    

이제 관리 클러스터가 워크로드 클러스터를 대체 계정에 배포할 수 있습니다.

계정에 워크로드 클러스터를 배포하려면 다음을 수행합니다.

  1. tanzu cluster create --dry-run을 실행하여 클러스터 매니페스트를 생성합니다.

  2. 매니페스트에서 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
    ...
    
  3. kubectl apply -f my-cluster-manifest.yaml을 실행하여 워크로드 클러스터를 생성합니다.

워크로드 클러스터를 생성한 후 대체 계정 자격 증명을 사용하여 vSphere 로그인하면 실행 중인 것으로 표시됩니다.

자세한 내용은 Cluster API 제공자 vSphere 저장소의 ID 관리를 참조하십시오.

데이터스토어 클러스터를 사용하는 클러스터 배포

참고

이 기능은 예상대로 작동하지 않습니다. 워크로드 클러스터의 스토리지 정책의 기반으로 데이터스토어 클러스터의 여러 데이터스토어에 태그를 지정하는 경우 워크로드 클러스터는 데이터스토어 중 하나만 사용합니다.

워크로드 클러스터가 단일 데이터스토어 대신 데이터스토어 클러스터를 사용하도록 설정하려면 다음과 같이 데이터스토어 클러스터 내의 모든 데이터스토어를 대상으로 하는 스토리지 정책을 설정합니다.

  1. 태그를 생성하고 관련 데이터스토어와 연결합니다.

    1. vSphere 태그의 절차에 따라 vCenter Server 태그 범주를 생성합니다. 범주에 연결 가능한 개체 유형으로 Datastore가 있는지 확인합니다.
    2. vSphere 태그의 다른 절차에 따라 이전 단계에서 생성된 범주 내에 태그를 생성하고 새 태그를 데이터스토어 클러스터에 속하는 모든 데이터스토어와 연결합니다.
  2. 태그 기반 배치를 위해 VM 스토리지 정책 생성에 따라 태그 기반 스토리지 정책을 생성합니다.

  3. 클러스터 구성 파일에서 다음을 수행합니다.

    • VSPHERE_STORAGE_POLICY_ID를 이전 단계에서 생성한 스토리지 정책의 이름으로 설정합니다.
    • VSPHERE_DATASTORE가 설정되지 않았는지 확인합니다. VSPHERE_DATASTORE 설정은 스토리지 정책 설정을 재정의합니다.

다중 OS 워크로드 클러스터 배포

Windows 및 Linux 기반 Worker 노드가 모두 있는 다중 OS 워크로드 클러스터를 배포하려면 사용자 지정 Windows 시스템 이미지를 생성하고, Windows 워크로드 클러스터를 배포한 다음, Linux MachineDeployment를 추가하여 Windows 전용 워크로드 클러스터를 다중 OS 클러스터로 변환합니다.

다중 OS 클러스터는 Windows 및 Linux 워크로드를 모두 호스팅할 수 있으며 해당 클러스터가 속한 Worker 노드에서 Linux 기반 TKG 구성 요소를 실행할 수 있습니다.

  1. Windows 사용자 지정 시스템 이미지의 모든 절차에 따라 Windows 시스템 이미지를 생성합니다.
  2. YAML 파일(예: win-osimage.yaml)을 생성하여 Windows 시스템 이미지를 생성할 때 템플릿을 가리키는 OSImage를 관리 클러스터에 추가합니다.

    다음 샘플 YAML 파일을 사용할 수 있습니다. spec.image.ref.template 값을 생성한 Windows 템플릿의 위치로 변경합니다. 경로는 vSphere 환경에 따라 다릅니다.

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: OSImage
    metadata:
     name: v1.27.5---vmware.2-tkg.1-windows
    spec:
     image:
       ref:
         template: /dc0/vm/windows-2019-kube-v1.27.5
         version: v1.27.5+vmware.2-tkg.1-windows
       type: ova
     kubernetesVersion: v1.27.5+vmware.2
     os:
       arch: amd64
       name: windows
       type: windows
       version: "2019"
    
  3. kubectl apply -f win-osimage.yaml을 실행하여 OSImage를 추가합니다.

  4. TKR 확인 및 Webhook 유효성 검사가 성공적으로 수행되고 Windows 구성 요소를 설치할 수 있도록 MultiOS 클러스터에 사용하려는 TKR에 새 OSImage 및 tkg-windows 패키지를 추가합니다.

    다음 명령을 사용하여 TKR을 편집하여 OSImage를 spec.osImages에서 새 항목으로 추가하고, tkg-windows 패키지를 spec.bootstrapPackages에서 새 항목으로 추가합니다.

    $ kubectl edit tkr v1.27.5---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.27.5---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.31.0+vmware.1
     osImages:
     # Add the Windows OSImage name to this list AND kKeep the other images already listed here under osImages.
     - name: v1.27.5---vmware.2-tkg.1-windows
    
    참고

    TKR 컨트롤러 관리자가 TKR 컨트롤러 관리자에 의해 이 편집을 덮어쓰지 않습니다. TKR 컨트롤러 관리자가 TKG 저장소의 TKR을 내부 저장소로 지속적으로 조정하더라도 조정으로 인해 편집이 수행되지 않고 누락된 새 TKR만 생성됩니다.

  5. MultiOS 클러스터 구성 파일에 다음과 같은 매개 변수가 있는지 확인합니다.

    IS_WINDOWS_WORKLOAD_CLUSTER: "true"
    
  6. 다음 명령을 실행하여 클래스 기반 클러스터 개체 규격을 생성합니다.

    tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
    

    여기서:

    • WINDOWS-CLUSTER는 Windows 클러스터의 이름입니다.
    • CLUSTER-CONFIG는 구성 파일의 이름입니다.
  7. 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
    
  8. 다음 명령을 실행하여 다중 OS 클러스터를 배포합니다.

    tanzu cluster create my-cluster -f my-cluster-spec.yaml

노드는 잘 알려진 레이블, 주석, 테인트에서 OS 정보로 레이블이 지정되고 테인트되어 있습니다.

참고

다중 OS 워크로드 클러스터의 백업 및 복원은 지원되지 않습니다.

분산 포트 그룹 보안에 대한 참고 사항

Windows 또는 MultiOS 클러스터를 배포하는 경우 분산 포트 그룹에 특정 보안 정책이 Reject로 설정되어 있는지 확인해야 합니다. 예를 들어 비규칙 모드가 Accept로 설정된 경우 노드는 ReadyNotReady 상태를 번갈아 사용할 수 있습니다.

vSphere Client Windows 노드에서 사용하는 네트워크를 선택하고 가상 Distributed Switch(virtual Distributed Switch) > 분산 포트 그룹 보안 정책(Distributed Portgroup Security Policy) 설정으로 이동한 후 이러한 정책을 Reject로 설정합니다.

  • 비규칙(Promiscuous) 모드
  • MAC 주소 변경
  • 위조 전송
check-circle-line exclamation-circle-line close-line
Scroll to top icon