Tanzu Kubernetes 클러스터는 YAML에 정의된 클러스터 규격 및 kubectl을 사용하여 Tanzu Kubernetes Grid 서비스 선언적 API를 호출하여 프로비저닝합니다. 클러스터를 프로비저닝한 후 클러스터를 운영하고 kubectl을 사용하여 워크로드를 배포합니다.

이 워크플로는 Tanzu Kubernetes Grid 서비스 v1alpha2 API를 지원합니다. v1alpha1 API를 사용하는 경우 해당 워크플로를 참조하십시오.

사전 요구 사항

워크플로 절차를 시작하기 전에 다음 사전 요구 사항이 완료되었는지 확인합니다.

프로시저

  1. vSphere에 대한 Kubernetes CLI 도구를 다운로드하고 설치합니다.
    지침은 vSphere에 대한 Kubernetes CLI 도구 다운로드 및 설치 항목을 참조하십시오.
  2. kubectl용 vSphere 플러그인을 사용하여 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. 감독자 클러스터에 성공적으로 로그인되었는지 확인합니다.
    다음과 유사한 메시지가 표시됩니다.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    여기서 192.197.2.65감독자 클러스터 컨텍스트이고 tkgs-nsTanzu Kubernetes 클러스터를 프로비저닝할 vSphere 네임스페이스의 컨텍스트입니다.
  4. 대상 vSphere 네임스페이스가 현재 컨텍스트인지 확인합니다.
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:[email protected]
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:[email protected]   tkgs-ns
    대상 vSphere 네임스페이스가 현재 컨텍스트가 아니면 해당 컨텍스트로 전환합니다.
    kubectl config use-context tkgs-ns
  5. 대상 vSphere 네임스페이스에서 사용할 수 있는 가상 시스템 클래스 바인딩을 나열합니다.
    kubectl get virtualmachineclassbindings
    대상 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다. VM 클래스가 표시되지 않으면 vSphere 네임스페이스에 기본 VM 클래스가 추가되어 있는지 확인합니다.
  6. 사용 가능한 영구 볼륨 스토리지 클래스를 가져옵니다.
    kubectl describe storageclasses
  7. 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
    다음 명령 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    이 명령을 통해 반환된 릴리스만 사용할 수 있습니다. 릴리스 또는 원하는 릴리스가 표시되지 않으면 원하는 OVA 파일을 컨텐츠 라이브러리와 동기화했는지 확인합니다.
  8. Tanzu Kubernetes 클러스터 프로비저닝을 위한 YAML 파일을 만듭니다.
    1. v1alpha2 API 규격을 검토합니다.
    2. 클러스터 프로비저닝을 위한 예제 YAML 파일(요구 사항에 따라 기본 또는 사용자 지정) 중 하나로 시작합니다.
    3. YAML 파일을 tkgs-cluster-1.yaml 또는 이와 유사하게 저장합니다.
    4. 요구 사항을 기반으로 다음을 포함하여 이전 명령의 출력에서 수집한 정보를 사용하여 YAML 파일을 채웁니다.
      • 클러스터의 이름(예: tkgs-cluster-1)
      • 대상 vSphere 네임스페이스(예: tkgs-ns)
      • 바인딩된 VM 클래스(예: guaranteed-mediumguaranteed-small)
      • 클러스터 노드 및 워크로드에 대한 스토리지 클래스(예: vwt-storage-policy)
      • 제어부 및 작업자 노드(복제본) 수
      • TKR NAME 문자열로 지정된 Tanzu Kubernetes 릴리스(예: v1.21.6---vmware.1-tkg.1.b3d708a)
    5. 필요에 따라 YAML 파일을 사용자 지정합니다. 예:
      • etcdcontainerd와 같이 변동률이 높은 구성 요소에 대해 별도의 볼륨 추가
      • 클러스터 노드에 대한 기본 영구 스토리지 클래스 지정
      • CNI, 포드 및 서비스 CIDR을 포함한 클러스터 네트워킹 사용자 지정
    이 단계의 결과는 TKGS 클러스터를 프로비저닝하기에 유효한 YAML입니다. 예:
    apiVersion: run.tanzu.vmware.com/v1alpha2
    kind: TanzuKubernetesCluster
    metadata:
      name: tkgs-cluster-1
      namespace: tkgs-ns
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: etcd
              mountPath: /var/lib/etcd
              capacity:
                storage: 4Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: containerd
              mountPath: /var/lib/containerd
              capacity:
                storage: 16Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        - name: worker-nodepool-a2
          replicas: 2
          vmClass: guaranteed-small
          storageClass: vwt-storage-policy
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
      settings:
        storage:
          defaultClass: vwt-storage-policy
    참고: 위의 예에서는 기본 클러스터 네트워킹, 즉 클러스터 포드 및 서비스에 대한 Antrea CNI 및 기본 CIDR 범위가 사용됩니다.
  9. 다음 kubectl 명령을 실행하여 클러스터를 프로비저닝합니다.
    kubectl apply -f tkgs-cluster-1.yaml
    예상 결과:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  10. kubectl을 사용하여 클러스터 노드의 배포를 모니터링합니다.
    kubectl get tanzukubernetesclusters
    처음에는 클러스터가 프로비저닝 중이기 때문에 준비되지 않았습니다.
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE    READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   2m4s   False   True
    몇 분 후에 READY 상태가 True여야 합니다.
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   13m   True    True
    추가 지침은 kubectl을 사용하여 Tanzu Kubernetes 클러스터 상태 모니터링 항목을 참조하십시오.
  11. vSphere Client를 사용하여 클러스터 노드의 배포를 모니터링합니다.
    vSphere 호스트 및 클러스터 인벤토리에서 가상 시스템 노드가 대상 vSphere 네임스페이스에 배포되는 것을 볼 수 있습니다.
  12. kubectl 명령을 추가로 실행하여 클러스터 프로비저닝을 확인합니다.
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    추가 지침은 Tanzu Kubernetes 클러스터 작업 명령 사용을 참조하십시오.
    문제 해결은 Tanzu Kubernetes 클러스터 문제 해결을 참조하십시오.
  13. kubectl용 vSphere 플러그인을 사용하여 클러스터에 로그인합니다.
    kubectl vsphere login --server=IP-ADDRESS --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 tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
  14. Tanzu Kubernetes 클러스터에 성공적으로 로그인되었는지 확인합니다.
    다음과 유사한 메시지가 표시됩니다.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-cluster-1
       tkgs-ns
    여기서 192.197.2.65감독자 클러스터 컨텍스트이고, tkgs-nsvSphere 네임스페이스 컨텍스트이고, tkgs-cluster-1Tanzu Kubernetes 클러스터 컨텍스트입니다.
  15. kubectl을 사용하여 사용 가능한 클러스터 컨텍스트를 나열합니다.
    kubectl config get-contexts
    예:
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:[email protected]
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:[email protected]
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:[email protected]   tkgs-ns
    필요한 경우 kubect config use-context tkgs-cluster-1을 사용하여 현재 컨텍스트가 되도록 Tanzu Kubernetes 클러스터로 전환합니다.
  16. 다음 kubectl 명령을 사용하여 클러스터 프로비저닝을 확인합니다.
    kubectl get nodes
    예:
    NAME                                                       STATUS   ROLES                  AGE   VERSION
    tkgs-cluster-1-control-plane-6ln2h                         Ready    control-plane,master   30m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-6q67n                         Ready    control-plane,master   33m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-jw964                         Ready    control-plane,master   37m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-h5fp8   Ready    <none>                 32m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-q4g24   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-vdcn4   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-nh4dg    Ready    <none>                 34m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-vvfmf    Ready    <none>                 33m   v1.21.6+vmware.1
  17. kubectl 명령을 추가로 사용하여 클러스터 프로비저닝을 확인합니다.
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  18. 적절한 포드 보안 정책을 정의합니다.
    Tanzu Kubernetes 클러스터에는 기본적으로 PodSecurityPolicy 승인 컨트롤러가 사용하도록 설정되어 있습니다. 지침은 Tanzu Kubernetes 클러스터에서 포드 보안 정책 사용 항목을 참조하십시오.
    워크로드 및 사용자에 따라 시스템에서 제공된 PodSecurityPolicy에 대한 바인딩을 생성하거나 사용자 지정 PodSecurityPolicy를 생성해야 합니다. 포드 보안 정책에 대한 역할 바인딩 예의 내용을 참조하십시오.
  19. 예제 워크로드를 배포하고 클러스터 생성을 확인합니다.
    지침은 Tanzu Kubernetes 클러스터에 워크로드 배포 항목을 참조하십시오.
  20. TKG 확장을 배포하여 클러스터를 운영합니다.
    지침은 Tanzu Kubernetes 클러스터에 TKG 패키지 배포 항목을 참조하십시오.