Tanzu Kubernetes 클러스터는 YAML에 정의된 클러스터 규격 및 kubectl을 사용하여 Tanzu Kubernetes Grid 서비스 선언적 API를 호출하여 프로비저닝합니다. 클러스터를 프로비저닝한 후 클러스터를 운영하고 kubectl을 사용하여 워크로드를 배포합니다.
이 워크플로는 Tanzu Kubernetes Grid 서비스 v1alpha2 API를 지원합니다. v1alpha1 API를 사용하는 경우 해당 워크플로를 참조하십시오.
사전 요구 사항
워크플로 절차를 시작하기 전에 다음 사전 요구 사항이 완료되었는지 확인합니다.
- Tanzu Kubernetes Grid 서비스 v1alpha2 API를 지원하도록 환경을 설치하거나 업데이트합니다. 자세한 내용은 요구 사항을 참조하십시오. v1alpha2 API를 지원하는 최소 Tanzu Kubernetes 릴리스는
v1.21.2
입니다. 자세한 내용은 VMware Tanzu Kubernetes 릴리스 정보를 참조하십시오. - Tanzu Kubernetes 클러스터를 호스팅하기 위해 vSphere 네임스페이스를 구성합니다. 네임스페이스에는 DevOps 엔지니어 및 공유 스토리지에 대한 편집 권한이 필요합니다. vSphere 네임스페이스 생성 및 구성의 내용을 참조하십시오.
- Tanzu Kubernetes 릴리스용 컨텐츠 라이브러리를 생성하고 사용하려는 릴리스를 동기화합니다. Tanzu Kubernetes 릴리스용 컨텐츠 라이브러리 생성 및 관리의 내용을 참조하십시오.
- 사용할 기본 VM 클래스와 사용자 지정 VM 클래스가 필요한지 여부를 결정합니다. Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오.
- 컨텐츠 라이브러리 및 가상 시스템 클래스를 vSphere 네임스페이스와 연결합니다. Tanzu Kubernetes 릴리스에 대한 vSphere 네임스페이스 구성의 내용을 참조하십시오.
프로시저
- vSphere에 대한 Kubernetes CLI 도구를 다운로드하고 설치합니다.
지침은 vSphere에 대한 Kubernetes CLI 도구 다운로드 및 설치 항목을 참조하십시오.
- kubectl용 vSphere 플러그인을 사용하여 감독자 클러스터로 인증합니다.
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
지침은 vCenter Single Sign-On 사용자로 감독자 클러스터에 연결 항목을 참조하십시오. - 감독자 클러스터에 성공적으로 로그인되었는지 확인합니다.
다음과 유사한 메시지가 표시됩니다.
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkgs-ns
여기서192.197.2.65
는 감독자 클러스터 컨텍스트이고tkgs-ns
는 Tanzu Kubernetes 클러스터를 프로비저닝할 vSphere 네임스페이스의 컨텍스트입니다. - 대상 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
- 대상 vSphere 네임스페이스에서 사용할 수 있는 가상 시스템 클래스 바인딩을 나열합니다.
kubectl get virtualmachineclassbindings
대상 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다. VM 클래스가 표시되지 않으면 vSphere 네임스페이스에 기본 VM 클래스가 추가되어 있는지 확인합니다. - 사용 가능한 영구 볼륨 스토리지 클래스를 가져옵니다.
kubectl describe storageclasses
- 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
다음 명령 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
kubectl get tkr
kubectl get tanzukubernetesreleases
이 명령을 통해 반환된 릴리스만 사용할 수 있습니다. 릴리스 또는 원하는 릴리스가 표시되지 않으면 원하는 OVA 파일을 컨텐츠 라이브러리와 동기화했는지 확인합니다. - Tanzu Kubernetes 클러스터 프로비저닝을 위한 YAML 파일을 만듭니다.
- v1alpha2 API 규격을 검토합니다.
- 클러스터 프로비저닝을 위한 예제 YAML 파일(요구 사항에 따라 기본 또는 사용자 지정) 중 하나로 시작합니다.
- YAML 파일을
tkgs-cluster-1.yaml
또는 이와 유사하게 저장합니다. - 요구 사항을 기반으로 다음을 포함하여 이전 명령의 출력에서 수집한 정보를 사용하여 YAML 파일을 채웁니다.
- 클러스터의 이름(예:
tkgs-cluster-1
) - 대상 vSphere 네임스페이스(예:
tkgs-ns
) - 바인딩된 VM 클래스(예:
guaranteed-medium
및guaranteed-small
) - 클러스터 노드 및 워크로드에 대한 스토리지 클래스(예:
vwt-storage-policy
) - 제어부 및 작업자 노드(복제본) 수
- TKR NAME 문자열로 지정된 Tanzu Kubernetes 릴리스(예:
v1.21.6---vmware.1-tkg.1.b3d708a
)
- 클러스터의 이름(예:
- 필요에 따라 YAML 파일을 사용자 지정합니다. 예:
etcd
및containerd
와 같이 변동률이 높은 구성 요소에 대해 별도의 볼륨 추가- 클러스터 노드에 대한 기본 영구 스토리지 클래스 지정
- 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 범위가 사용됩니다. - 다음 kubectl 명령을 실행하여 클러스터를 프로비저닝합니다.
kubectl apply -f tkgs-cluster-1.yaml
예상 결과:tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
- 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 클러스터 상태 모니터링 항목을 참조하십시오. - vSphere Client를 사용하여 클러스터 노드의 배포를 모니터링합니다.
vSphere 호스트 및 클러스터 인벤토리에서 가상 시스템 노드가 대상 vSphere 네임스페이스에 배포되는 것을 볼 수 있습니다.추가 지침은 vSphere Client를 사용하여 Tanzu Kubernetes 클러스터 상태 모니터링 항목을 참조하십시오.
-
kubectl
명령을 추가로 실행하여 클러스터 프로비저닝을 확인합니다.kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
추가 지침은 Tanzu Kubernetes 클러스터 작업 명령 사용을 참조하십시오.문제 해결은 Tanzu Kubernetes 클러스터 문제 해결을 참조하십시오. - 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
추가 지침은 vCenter Single Sign-On 사용자로 Tanzu Kubernetes 클러스터에 연결 항목을 참조하십시오. - 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-ns
는 vSphere 네임스페이스 컨텍스트이고,tkgs-cluster-1
는 Tanzu Kubernetes 클러스터 컨텍스트입니다. -
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 클러스터로 전환합니다. - 다음 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
- kubectl 명령을 추가로 사용하여 클러스터 프로비저닝을 확인합니다.
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- 적절한 포드 보안 정책을 정의합니다.
Tanzu Kubernetes 클러스터에는 기본적으로 PodSecurityPolicy 승인 컨트롤러가 사용하도록 설정되어 있습니다. 지침은 Tanzu Kubernetes 클러스터에서 포드 보안 정책 사용 항목을 참조하십시오.워크로드 및 사용자에 따라 시스템에서 제공된 PodSecurityPolicy에 대한 바인딩을 생성하거나 사용자 지정 PodSecurityPolicy를 생성해야 합니다. 포드 보안 정책에 대한 역할 바인딩 예의 내용을 참조하십시오.
- 예제 워크로드를 배포하고 클러스터 생성을 확인합니다.
지침은 Tanzu Kubernetes 클러스터에 워크로드 배포 항목을 참조하십시오.
- TKG 확장을 배포하여 클러스터를 운영합니다.
지침은 Tanzu Kubernetes 클러스터에 TKG 패키지 배포 항목을 참조하십시오.