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

이 워크플로는 클러스터 프로비저닝 프로세스에 대한 전체 절차를 제공합니다. 각 단계에는 특정 작업에 대한 자세한 정보를 제공하는 링크가 있습니다.

사전 요구 사항

다음 사전 요구 사항을 완료하십시오.

프로시저

  1. 이 항목의 맨 위에 나열된 사전 요구 사항이 완료되었는지 확인합니다.
  2. vSphere에 대한 Kubernetes CLI 도구를 다운로드하고 설치합니다.
    지침은 vSphere에 대한 Kubernetes CLI 도구 다운로드 및 설치 항목을 참조하십시오.
  3. kubectl용 vSphere 플러그인을 사용하여 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  4. 감독자 클러스터에 성공적으로 로그인되었는지 확인합니다.
    다음과 유사한 메시지가 표시됩니다.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    여기서 192.197.2.65감독자 클러스터 컨텍스트이고 tkgs-nsTanzu Kubernetes 클러스터를 프로비저닝할 vSphere 네임스페이스의 컨텍스트입니다.
  5. 대상 vSphere 네임스페이스가 현재 컨텍스트인지 확인합니다.
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:user@vsphere.local
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:user@vsphere.local   tkgs-ns
    대상 vSphere 네임스페이스가 현재 컨텍스트가 아니면 해당 컨텍스트로 전환합니다.
    kubectl config use-context tkgs-ns
  6. 대상 vSphere 네임스페이스에서 사용할 수 있는 가상 시스템 클래스 바인딩을 나열합니다.
    kubectl get virtualmachineclassbindings
    대상 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다.
  7. 사용 가능한 영구 볼륨 스토리지 클래스를 가져옵니다.
    kubectl describe storageclasses
  8. 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
    다음 명령 중 하나를 사용할 수 있습니다.
    kubectl get tkr
    kubectl get tanzukubernetesreleases
  9. Tanzu Kubernetes 클러스터 프로비저닝을 위한 YAML 파일을 생성합니다.
    1. 예제 YAML 파일 중 하나로 시작합니다.
    2. 이전 명령의 출력에서 모은 정보를 사용하여 클러스터 YAML을 채웁니다. 예를 들면 다음과 같습니다.
      • 대상 vSphere 네임스페이스: tkgs-ns
      • 변동률이 높은 노드 구성 요소에 대한 별도의 볼륨: etcdcontainerd
      • 클러스터 노드 및 워크로드에 대한 스토리지 클래스: vwt-storage-policy
      • 바인딩된 VM 클래스: guaranteed-mediumguaranteed-small
      • TKR NAME: v1.21.6---vmware.1-tkg.1.b3d708a
      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 범위가 사용됩니다.
    3. 구성 매개 변수의 전체 목록을 참조하여 필요에 따라 클러스터를 사용자 지정합니다.
    4. 파일을 tkgs-cluster-1.yaml 또는 이와 유사하게 저장합니다.
  10. 다음 kubectl 명령을 실행하여 클러스터를 프로비저닝합니다.
    kubectl apply -f tkgs-cluster-1.yaml
    예상 결과:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  11. 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 클러스터 상태 모니터링 항목을 참조하십시오.
  12. vSphere Client를 사용하여 클러스터 노드의 배포를 모니터링합니다.
    vSphere 호스트 및 클러스터 인벤토리에서 가상 시스템 노드가 대상 vSphere 네임스페이스에 배포되는 것을 볼 수 있습니다.
  13. kubectl 명령을 추가로 실행하여 클러스터 프로비저닝을 확인합니다.
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    추가 지침은 Tanzu Kubernetes 클러스터 작업 명령 사용을 참조하십시오.
    문제 해결은 Tanzu Kubernetes 클러스터 문제 해결을 참조하십시오.
  14. 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 user@vsphere.local \
    --tanzu-kubernetes-cluster-name tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
  15. 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 클러스터 컨텍스트입니다.
  16. kubectl을 사용하여 사용 가능한 클러스터 컨텍스트를 나열합니다.
    kubectl config get-contexts
    예:
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:administrator@vsphere.local
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local   tkgs-ns
    필요한 경우 kubect config use-context tkgs-cluster-1을 사용하여 현재 컨텍스트가 되도록 Tanzu Kubernetes 클러스터로 전환합니다.
  17. 다음 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
  18. kubectl 명령을 추가로 사용하여 클러스터 프로비저닝을 확인합니다.
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  19. 적절한 포드 보안 정책을 정의합니다.
    Tanzu Kubernetes 클러스터에는 기본적으로 PodSecurityPolicy 승인 컨트롤러가 사용하도록 설정되어 있습니다. 지침은 Tanzu Kubernetes 클러스터에서 포드 보안 정책 사용 항목을 참조하십시오.
    워크로드 및 사용자에 따라 시스템에서 제공된 PodSecurityPolicy에 대한 바인딩을 생성하거나 사용자 지정 PodSecurityPolicy를 생성해야 합니다. 포드 보안 정책에 대한 역할 바인딩 예의 내용을 참조하십시오.
  20. 예제 워크로드를 배포하고 클러스터 생성을 확인합니다.
    지침은 Tanzu Kubernetes 클러스터에 워크로드 배포 항목을 참조하십시오.
  21. TKG 확장을 배포하여 클러스터를 운영합니다.
    지침은 Tanzu Kubernetes 클러스터에 TKG 패키지 배포 항목을 참조하십시오.