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. 다음 태그 범주를 생성, 편집 또는 삭제에 따라 vCenter Server에 태그 범주를 생성합니다. 범주에 연결 가능한 개체 유형으로 Datastore가 있는지 확인합니다.
    2. 태그 생성에 따라 이전 단계에서 생성한 범주 내에 태그를 생성합니다.
    3. 태그 할당 또는 제거에 따라 새 태그를 데이터스토어 클러스터에 속하는 모든 데이터스토어와 연결합니다.
  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.24.10---vmware.1-tkg.1-windows
    spec:
     image:
       ref:
         template: /dc0/vm/windows-2019-kube-v1.24.10+vmware.1-tkg.1
         version: v1.24.10+vmware.1-tkg.1-windows
       type: ova
     kubernetesVersion: v1.24.10+vmware.1
     os:
       arch: amd64
       name: windows
       type: windows
       version: "2019"
    
  3. kubectl apply -f win-osimage.yaml을 실행하여 OSImage를 추가합니다.

  4. TKR 확인 및 Webhook 유효성 검사가 성공적으로 수행되도록 TKR 버전을 spec.osImages에 추가합니다. 다음 명령을 사용하여 TKR 버전을 spec.osImages에 추가합니다.

    $ kubectl edit tkr v1.24.10---vmware.x-tkg.x
    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: TanzuKubernetesRelease
    metadata:
      name: v1.24.10---vmware.x-tkg.x
    spec:
      bootstrapPackages:
      # Keep the other packages listed here.
      - name: tkg-windows.tanzu.vmware.com.0.28.1+vmware.1
      osImages:
      # Keep the other images listed here.
      - name: v1.24.10---vmware.1-tkg.1-windows
    

    TKR에서 새 항목을 spec.bootstrapPackages에 추가하여 tkg-windows 패키지를 사용하도록 설정합니다. 패키지는 tanzu package available list tkg-windows.tanzu.vmware.com이 있는 공식 저장소에서 찾을 수 있습니다. 다음은 작동하는 TKR의 예입니다.

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

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

    형식 설명: * WINDOWS-CLUSTER는 Windows 클러스터의 이름입니다. * CLUSTER-CONFIG는 구성 파일의 이름입니다.

  6. 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
    
  7. 다음 명령을 실행하여 다중 OS 클러스터를 배포합니다.

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

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

참고

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

Windows Antrea CNI 안정성

HNS 네트워크는 Windows에서 영구적이지 않습니다. Windows 노드가 재부팅된 후 antrea-agent에서 생성된 HNS 네트워크가 제거되고 Open vSwitch 확장이 기본적으로 사용되지 않도록 설정됩니다. 따라서 Windows 노드가 재부팅된 후 오래된 OVS 브리지와 포트를 제거합니다. Clean-AntreaNetwork.ps1 도움말 스크립트를 사용하여 OVS 브리지를 정리할 수 있습니다.

다음 방법 중 하나를 사용하여 도움말 스크립트를 설치합니다.

  • 수동 설치
  • 자동 설치

수동 설치

분리된 각 워크로드 노드에 수동으로 도움말 스크립트를 설치하려면 다음을 수행합니다.

  1. 이 코드 샘플에서 Clean-AntreaNetwork.ps1 설치 스크립트를 다운로드합니다. 다운로드한 설치 스크립트 snippet.ps1Clean-AntreaNetwork.ps1을 설치합니다.
  2. SSH를 사용하여 노드에 연결하고 다음 명령을 실행합니다.

    powershell snippet.ps1
    

자동 설치

새 워크로드 노드마다 도움말 스크립트를 자동으로 설치하는 사용자 지정 ClusterClass를 생성하려면 다음을 수행합니다.

  1. ClusterClass 생성의 단계에 따라 사용자 지정 ClusterClass 개체를 생성합니다.
  2. YTT를 사용하여 이 코드 샘플의 패치를 적용하고 관리 클러스터에 규격을 적용합니다.

    ytt -f custom-cluster-class.yaml -f snippet.yaml | kubectl apply -f -
    

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

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