이 워크플로에 따라 kubectl 명령 및 YAML에 정의된 클러스터 규격을 사용하여 TKG 서비스 클러스터를 선언적으로 프로비저닝합니다.

이 워크플로는 kubectl 및 YAML을 사용하여 선언적으로 TKG 클러스터 프로비저닝을 지원합니다.

사전 요구 사항

프로비저닝 워크플로를 시작하기 전에 다음 사전 요구 사항을 확인하거나 완료하십시오.

프로시저

  1. vSphere에 대한 Kubernetes CLI 도구를 설치합니다.
  2. kubectl을 사용하여 감독자에서 인증합니다.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
    참고: 감독자에 대한 FQDN은 사용하도록 설정된 경우에만 사용할 수 있습니다. 자세한 내용은 감독자 구성 설명서를 참조하십시오.
  3. 감독자에 성공적으로 로그인되었는지 확인합니다.
    다음과 유사한 메시지가 표시됩니다.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
    여기서 192.197.2.65감독자 컨텍스트이고 tkg2-cluster-namespace는 TKG 클러스터를 프로비저닝할 vSphere 네임스페이스의 컨텍스트입니다.
  4. 대상 vSphere 네임스페이스가 현재 컨텍스트인지 확인합니다.
    kubectl config get-contexts
    CURRENT   NAME                    CLUSTER         AUTHINFO                                        NAMESPACE
              192.197.2.65            192.197.2.65    wcp:10.197.154.65:[email protected]
    *         tkg2-cluster-namespace  10.197.154.65   wcp:10.197.154.65:[email protected]   tkg2-cluster-namespace
    
    대상 vSphere 네임스페이스가 현재 컨텍스트가 아니면 해당 컨텍스트로 전환합니다.
    kubectl config use-context tkg2-cluster-namespace
  5. vSphere 네임스페이스에서 사용할 수 있는 VM 클래스를 나열합니다.
    kubectl get virtualmachineclass
    대상 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다. VM 클래스가 표시되지 않으면 기본 VM 클래스가 vSphere 네임스페이스와 연결되어 있는지 확인합니다. VM 클래스 오류 문제 해결 항목도 참조하십시오.
  6. 사용 가능한 영구 볼륨 스토리지 클래스를 가져옵니다.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME
    이 명령은 tkg2-storage-policy.storageclass.storage.k8s.io/requests.storage 형식의 스토리지 클래스를 포함하여 네임스페이스에 대한 세부 정보를 반환합니다. 문자열의 첫 번째 토큰은 스토리지 클래스 이름입니다. 이 예시에서는 tkg2-storage-policy입니다. kubectl describe storageclasses 명령도 사용 가능한 스토리지 클래스를 반환하지만 vSphere 관리자 권한이 필요합니다.
  7. 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
    다음 명령 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    이 명령은 이 vSphere 네임스페이스에서 사용 가능한 TKR을 반환하고 배포하는 감독자와의 호환성을 보여줍니다. 이 명령을 통해 반환된 릴리스만 사용할 수 있습니다. 릴리스 또는 원하는 릴리스가 표시되지 않으면 다음을 수행했는지 확인하십시오. a) TKR 컨텐츠 라이브러리를 생성했습니다. b) 컨텐츠 라이브러리를 원하는 OVA 파일과 동기화했습니다. c) 컨텐츠 라이브러리를 TKG 클러스터를 프로비저닝하는 vSphere 네임스페이스와 연결했습니다.
  8. TKG 클러스터를 프로비저닝하기 위한 YAML 파일을 작성합니다.
    1. 생성할 클러스터 유형을 결정하고 해당 API 및 기능을 검토합니다.
    2. 클러스터 프로비저닝을 위한 예시 YAML 중 하나로 시작합니다.
    3. YAML 파일을 tkg2-cluster-1.yaml 또는 이와 유사하게 저장합니다.
    4. 앞의 명령 출력에서 수집한 다음을 비롯한 정보를 사용하여 YAML을 채웁니다.
      • 클러스터의 이름(예: tkg2-cluster-1)
      • 대상 vSphere 네임스페이스
      • 바인딩된 VM 클래스(예: guaranteed-medium)
      • 클러스터 노드 및 영구 볼륨에 대한 스토리지 클래스
      • 제어부 및 작업자 노드(복제본) 수
      • TKR NAME 문자열로 지정된 Tanzu Kubernetes 릴리스(예: v1.25.7+vmware.3-fips.1-tkg.1)
    5. 필요에 맞게 TGK 클러스터 YAML을 사용자 지정합니다.
      • 변동률이 높은 containerd와 같은 구성 요소에 대해 별도의 볼륨 추가
      • 클러스터 노드 및 영구 볼륨에 대한 기본 영구 스토리지 클래스 지정
      • CNI, 포드 및 서비스 CIDR을 포함한 클러스터 네트워킹 사용자 지정
    6. YAML 구문 검사기를 사용하여 YAML이 유효한지 확인합니다.
    이 단계의 결과는 TKG 클러스터를 프로비저닝하기에 유효한 YAML입니다.
  9. 다음 명령을 실행하여 TKG 클러스터를 프로비저닝합니다.
    kubectl apply -f tkg2-cluster-1.yaml
    예상 결과:
    tanzukubernetescluster.run.tanzu.vmware.com/tkg2-cluster-1 created
  10. TKG 클러스터의 프로비저닝을 모니터링합니다.
    kubectl get tanzukubernetesclusters
    kubectl get tkc
    v1beta1 API를 사용하여 클러스터를 생성하는 경우:
    kubectl get cluster
    처음에는 READY 상태가 False입니다. 클러스터가 프로비저닝되고 있기 때문입니다. 몇 분 후에 True가 됩니다.
    NAME              CONTROL PLANE   WORKER   TKR NAME                            AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkg2-cluster-1    3               6        v1.25.7+vmware.3-fips.1-tkg.1       49m   True    True
    추가 명령을 실행하여 클러스터에 대한 세부 정보를 봅니다.
    kubectl get tanzukubernetescluster,cluster,virtualmachinesetresourcepolicy,virtualmachineservice,kubeadmcontrolplane,machinedeployment,machine,virtualmachine
    kubectl describe tanzukubernetescluster tkg2-cluster-1
  11. vSphere Client를 사용하여 클러스터 노드의 배포를 모니터링합니다.
    호스트 및 클러스터에 대한 vSphere 인벤토리에서 대상 vSphere 네임스페이스에 배포된 클러스터 노드 VM을 볼 수 있습니다.
  12. 모든 TKG 클러스터 노드가 [준비] 상태가 되면 kubectl용 vSphere 플러그인을 사용하여 클러스터에 로그인합니다.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \
    --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
    예:
    kubectl vsphere login --server=192.197.2.65 --vsphere-username [email protected] \
    --tanzu-kubernetes-cluster-name tkg2-cluster-1 --tanzu-kubernetes-cluster-namespace tkg2-cluster-namespace
    참고: 로그인 명령은 제어부 노드가 실행 중이고 인증 서비스 플러그인이 시작된 후에만 성공합니다. 작업자 노드가 생성되는 중이면 로그인이 불규칙할 수 있습니다. 모든 클러스터 노드가 준비 상태가 되면 로그인하는 것이 좋습니다.
  13. 컨텍스트를 TKG 클러스터로 전환하여 현재 컨텍스트가 되도록 합니다.
    TKG 클러스터에 로그인하면 다음과 유사한 메시지가 표시될 수 있습니다.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
       tkg2-cluster-1
    여기서 192.197.2.65감독자 컨텍스트이고, tkg2-cluster-namespacevSphere 네임스페이스 컨텍스트이고, tkg2-cluster-1은 TKG 클러스터 컨텍스트입니다.
    TKG 클러스터 컨텍스트로 전환합니다.
    kubect config use-context tkg2-cluster-1
  14. TKG 클러스터 리소스를 확인합니다.
    kubectl get nodes
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  15. 테스트 포드를 배포하여 TKG 클러스터를 실행하고 예상대로 작동하는지 확인합니다.