일반 독자는 이 사이트에서 tanzu 코맨드-라인을 사용하여 TKGm 클러스터를 만들고 삭제하는 여러 기사를 볼 수 있습니다. TKGm은 vSphere를 비롯한 다양한 IaaS에 구축할 수 있는 다중 클라우드 TKG 클러스터(standalone TKG 클러스터라고도 함)를 설명하기 위해 사용하는 이름입니다. 이 게시물에서는 동일한 tanzu CLI 툴을 사용하여 vSphere with Tanzu상에 TKG service(TKGS)를 구축하는 방법을 보여드리겠습니다. 항상 TKG 클러스터를 vSphere with Tanzu와 함께 배포하려면 Supervisor 클러스터에 로그인하여 적절한 네임스페이스를 선택하고 YAML 매니페스트를 클러스터 세부 정보로 채운 다음 kubectl을 사용하여 클러스터를 배포해야 합니다. 여기서 tanzu CLI를 사용하여 이를 수행할 수 있는 다른 방법에 대해 알아보겠습니다.

본 게시물에서는 전제조건에 대한 여러 가지 가정이 제시되어 있습니다.

  • Tanzu CLI가 이미 설치되어 있습니다. 자세한 내용은 공식 문서를 참조하십시오.
  • vSphere with Tanzu가 설치되어 있습니다. 이 글에서는 vSphere 7.0U3c에 배포에 대해 설명합니다.
  • 네임스페이스를 만들었습니다. 제 경우에는 워크로드라고 합니다. CLI 또는 UI를 통해 네임스페이스 서비스를 통해 생성할 수 있습니다.

이 요구 사항만 있으면 진행할 수 있습니다.

단계 1: 네임스페이스 권한에서 사용자 추가

네임스페이스의 사용 권한 탭에 추가된 유효한 계정이 있는지 확인하고 클러스터 컨텍스트에 액세스할 때 이러한 계정 권한을 사용해야 합니다. 단순함을 위해 administrator SSO 계정을 사용하고 있지만, 더 적절한 계정을 사용하는 것이 좋습니다.

단계 2: 네임스페이스에 TKG PV를 위한 Storage Class / Storage Policy을 추가

워크로드 클러스터를 구축하려면 Storage Class가 하나 이상 필요합니다. Storage Class는 클러스터를 생성할 때 제어부 노드와 작업자 노드 모두에서 루트 파일 시스템 Disk에 사용됩니다. 또한 퍼시스턴트 볼륨 요구사항이 있는 애플리케이션을 워크로드 클러스터에서 생성하려는 경우에도 Storage Class가 필요합니다. 이 예에서는 두 개의 스토리지 정책(둘 다 vSAN 관련)을 네임스페이스에 추가합니다. 이러한 스토리지 정책은 kubectl을 통해 쿼리할 때 스토리지 클래스로 표시됩니다.

% kubectl-vsphere login --server=https://xx.xx.62.18 --vsphere-username administrator@vsphere.local --insecure-skip-tls-verify

Logged in successfully.

You have access to the following contexts:
  xx.xx.62.18
  workload

If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.


% kubectl config use-context workload
Switched to context "workload".


% kubectl get sc
NAME                          PROVISIONER              RECLAIMPOLICY  VOLUMEBINDINGMODE  ALLOWVOLUMEEXPANSION  AGE
raid1                        csi.vsphere.vmware.com  Delete          Immediate          true                  19h
vsan-default-storage-policy  csi.vsphere.vmware.com  Delete          Immediate          true                  19h
%

단계 3: TKG 노드의 네임스페이스에 VM 클래스 추가

이제 네임스페이스에 하나 이상의 가상 시스템 클래스를 추가해야 합니다. 필요에 따라 선택할 수 있는 예제 VM 클래스가 이미 많이 제공되어 있거나 고유한 VM 클래스를 구축할 수도 있습니다. Kubectl을 통해 VM 클래스를 쿼리하는 것은 조금 이상합니다. kubectl get vmclass 명령은 슈퍼바이저 클러스터의 네임스페이스에 할당된 모든 VM 클래스를 표시합니다. 그러나 할당되지 않은 클래스는 표시되지 않으므로 대부분의 클러스터에서 CLI에서 사용 가능한 VM 클래스를 보기가 어렵습니다. 따라서 특히 이번이 첫 번째 네임스페이스인 경우 vSphere Client UI를 방문하여 사용 가능한 항목을 확인해야 합니다. 이 예에서는 단일 VM 클래스 guaranteed-small을 네임스페이스에 할당하고 있습니다. VM 클래스가 네임스페이스와 연결되면 kubectl get vmclassbinding 명령을 통해 연결을 확인할 수 있습니다.

% kubectl get vmclass
NAME              CPU  MEMORY  AGE
guaranteed-small  2    4Gi      19h


% kubectl get vmclassbinding
NAME              VIRTUALMACHINECLASS  AGE
guaranteed-small  guaranteed-small      19h
%

이 네임스페이스에 VM 클래스에 대한 컨텐츠 라이브러리도 추가했습니다. 이 단계는 이 연습의 요구 사항이 아닙니다.

단계 4: Tanzu Kubernetes release(TKr)를 선택

다음 단계는 클러스터에 포함할 쿠버네티스의 릴리즈를 결정하는 것입니다. kubectl get tkr 명령(tanzukubernetesrelease의 줄임말)은 사용 가능한 릴리스 목록과 호환 여부를 표시합니다. 그런 다음 스토리지 클래스 및 VM 클래스와 함께 클러스터 구성 파일에 추가할 수 있습니다.

% kubectl get tkr
NAME                                VERSION                          READY  COMPATIBLE  CREATED  UPDATES AVAILABLE
v1.16.12---vmware.1-tkg.1.da7afe7   1.16.12+vmware.1-tkg.1.da7afe7   True    True        3d23h    [1.17.17+vmware.1-tkg.1.d44d45a 1.16.14+vmware.1-tkg.1.ada4837]
v1.16.14---vmware.1-tkg.1.ada4837   1.16.14+vmware.1-tkg.1.ada4837   True    True        3d23h    [1.17.17+vmware.1-tkg.1.d44d45a]
v1.16.8---vmware.1-tkg.3.60d2ffd    1.16.8+vmware.1-tkg.3.60d2ffd    False   False       3d23h    [1.17.17+vmware.1-tkg.1.d44d45a 1.16.14+vmware.1-tkg.1.ada4837]
v1.17.11---vmware.1-tkg.1.15f1e18   1.17.11+vmware.1-tkg.1.15f1e18   True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.11---vmware.1-tkg.2.ad3d374   1.17.11+vmware.1-tkg.2.ad3d374   True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.13---vmware.1-tkg.2.2c133ed   1.17.13+vmware.1-tkg.2.2c133ed   True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.17---vmware.1-tkg.1.d44d45a   1.17.17+vmware.1-tkg.1.d44d45a   True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117]
v1.17.7---vmware.1-tkg.1.154236c    1.17.7+vmware.1-tkg.1.154236c    True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.17.8---vmware.1-tkg.1.5417466    1.17.8+vmware.1-tkg.1.5417466    True    True        3d23h    [1.18.15+vmware.1-tkg.2.ebf6117 1.17.17+vmware.1-tkg.1.d44d45a]
v1.18.10---vmware.1-tkg.1.3a6cd48   1.18.10+vmware.1-tkg.1.3a6cd48   True    True        3d23h    [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.18.15---vmware.1-tkg.1.600e412   1.18.15+vmware.1-tkg.1.600e412   True    True        3d23h    [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.18.15---vmware.1-tkg.2.ebf6117   1.18.15+vmware.1-tkg.2.ebf6117   True    True        3d23h    [1.19.7+vmware.1-tkg.2.f52f85a]
v1.18.5---vmware.1-tkg.1.c40d30d    1.18.5+vmware.1-tkg.1.c40d30d    True    True        3d23h    [1.19.7+vmware.1-tkg.2.f52f85a 1.18.15+vmware.1-tkg.2.ebf6117]
v1.19.7---vmware.1-tkg.1.fc82c41    1.19.7+vmware.1-tkg.1.fc82c41    True    True        3d23h    [1.20.7+vmware.1-tkg.1.7fb9067 1.19.7+vmware.1-tkg.2.f52f85a]
v1.19.7---vmware.1-tkg.2.f52f85a    1.19.7+vmware.1-tkg.2.f52f85a    True    True        3d23h    [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.2---vmware.1-tkg.1.1d4f79a    1.20.2+vmware.1-tkg.1.1d4f79a    True    True        3d23h    [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.2---vmware.1-tkg.2.3e10706    1.20.2+vmware.1-tkg.2.3e10706    True    True        3d23h    [1.20.7+vmware.1-tkg.1.7fb9067]
v1.20.7---vmware.1-tkg.1.7fb9067    1.20.7+vmware.1-tkg.1.7fb9067    True    True        3d23h

이 예에서는 최신 릴리스인 1.20.7 버전을 사용할 것입니다.

단계 5: TKG 클러스터 구성 파일을 생성

이전의 모든 정보가 수집되었으므로 이제 내 Tanzu Kubernetes 클러스터에 대한 구성 파일 생성을 진행할 수 있습니다. 다양한 설명이 포함된 구성 파일의 예는 공식 설명서에서 확인할 수 있습니다. 다음은 클러스터를 구축하는 데 사용할 간단한 예입니다. 저는 단일 제어부 노드와 단일 작업자 노드로 구성된 간단한 “dev” 계획 클러스터를 구축하려고 합니다. MachineChecks 또는 AutoScaler를 사용하도록 설정하지 않습니다. 제어부 및 작업자 노드 모두에 동일한 VM 클래스와 동일한 스토리지 클래스를 사용하고 있습니다. 또한 클러스터에 이름을 지정하고 네임스페이스 컨텍스트를 적절하게 설정했습니다.

% cat my-vsphere-tkc.yaml
INFRASTRUCTURE_PROVIDER: tkg-service-vsphere
CLUSTER_PLAN: dev
CLUSTER_NAME: workload1
NAMESPACE: workload
CNI: antrea
CONTROL_PLANE_STORAGE_CLASS: raid1
CONTROL_PLANE_VM_CLASS: guaranteed-small
SERVICE_DOMAIN: rainpole.com
STORAGE_CLASSES: vsan-default-storage-policy
WORKER_STORAGE_CLASS: raid1
WORKER_VM_CLASS: guaranteed-small
SERVICE_CIDR: 100.64.0.0/13
CLUSTER_CIDR: 100.96.0.0/11
ENABLE_MHC: false
ENABLE_AUTOSCALER: false

단계 6: Tanzu CLI를 통해 Supervisor 컨텍스트를 연결하고 TKG를 배포

다음 단계는 supervisor에 연결하기 위해 tanzu CLI를 사용하는 것입니다. 1단계의 로그인부터 Supervisor 클러스터 컨텍스트가 여전히 설정되어 있으므로 올바른 탄자수 로그인 구문만 사용하면 됩니다. 설정이 완료되면 이제 tansu CLI를 사용하여 클러스터를 배포하고 구성 파일과 원하는 TKr을 지정할 수 있습니다.

% tanzu login --context xx.xx.62.18
? Give the server a name xx.xx.62.18
✔  successfully logged in to management cluster using the kubeconfig xx.xx.62.18


% tanzu cluster create --file ./my-vsphere-tkc.yaml --tkr=v1.20.7---vmware.1-tkg.1.7fb9067
You are trying to create a cluster with kubernetes version '1.20.7+vmware.1-tkg.1.7fb9067' on vSphere with Tanzu, \
Please make sure virtual machine image for the same is available in the cluster content library.
Do you want to continue? [y/N]: y
Validating configuration...
Error: failed to apply the cluster configuration: kubectl apply failed, output: \
tanzukubernetescluster.run.tanzu.vmware.com/workload1 unchanged
secret/workload1-capabilities configured
secret/workload1-config-values configured
Error from server (Forbidden): error when retrieving current configuration of:
Resource: "addons.cluster.x-k8s.io/v1alpha3, Resource=clusterresourcesets", \
GroupVersionKind: "addons.cluster.x-k8s.io/v1alpha3, Kind=ClusterResourceSet"
Name: "workload1-capabilities", Namespace: "workload"
from server for: "/var/folders/lv/b1078qn55y52sq__y1533nlc0000gp/T/kubeapply-3429424587": \
clusterresourcesets.addons.cluster.x-k8s.io "workload1-capabilities" is forbidden: \
User "sso:Administrator@vsphere.local" cannot get resource "clusterresourcesets" \
in API group "addons.cluster.x-k8s.io" in the namespace "workload"
: exit status 1

✖  exit status 1

유효성 검사 중에 발생한 오류가 예상됩니다. 클러스터 배포는 차단되지 않습니다. 또한 TKG v1.4 Release Notes Known Issues 에 무시해도 됩니다.

단계 7: 워크로드 클러스터의 상태를 쿼리

다양한 명령을 사용하여 클러스터 상태를 쿼리할 수 있습니다.

% kubectl get cluster -n workload
NAME        PHASE
workload1  Provisioned


% kubectl get tanzukubernetescluster -n workload
NAME        CONTROL PLANE  WORKER  TKR NAME                          AGE  READY  TKR COMPATIBLE  UPDATES AVAILABLE
workload1  1              1        v1.20.7---vmware.1-tkg.1.7fb9067  16m  True   True


% tanzu cluster list
  NAME      NAMESPACE  STATUS  CONTROLPLANE  WORKERS  KUBERNETES                    ROLES  PLAN
  workload1  workload  running  1/            1/      1.20.7+vmware.1-tkg.1.7fb9067  <none>


% tanzu cluster get workload1 -n workload
  NAME      NAMESPACE  STATUS  CONTROLPLANE  WORKERS  KUBERNETES                    ROLES
  workload1  workload  running  1/            1/      1.20.7+vmware.1-tkg.1.7fb9067  <none>
ℹ

Details:

NAME                                                          READY  SEVERITY  REASON  SINCE  MESSAGE
/workload1                                                    True                     13m
├─ClusterInfrastructure - WCPCluster/workload1                True                     17m
├─ControlPlane - KubeadmControlPlane/workload1-control-plane  True                     13m
│ └─Machine/workload1-control-plane-jc5gh                     True                     14m
└─Workers
  └─MachineDeployment/workload1-workers-6nh9p
    └─Machine/workload1-workers-6nh9p-6ff9659d78-l62cw        True                     11m


% kubectl get virtualmachines
NAME                                      POWERSTATE  AGE
workload1-control-plane-jc5gh             poweredOn    25m
workload1-workers-6nh9p-6ff9659d78-l62cw  poweredOn    21m

단계 8: 클러스터 컨텍스트에 액세스

이제 kubectl-vsphere 명령 또는 tanzu CLI를 사용하여 클러스터 컨텍스트에 액세스할 수 있습니다. 아래에 두 가지를 모두 할 수 있는 예시를 제공했습니다.

8.1 tanzu CLI를 사용

첫 번째 예에서는 tanzu CLI를 사용합니다. 로그인 단계와 tanzu CLI를 컨텍스트와 연결하는 과정을 반복했지만, 이전에 설정한 컨텍스트와 동일한 컨텍스트라면 필요하지 않을 수 있습니다.

% kubectl-vsphere login --server xx.xx.62.18 --vsphere-username administrator@vsphere.local \
--insecure-skip-tls-verify

Logged in successfully.

You have access to the following contexts:
  xx.xx.62.18
  workload

If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.

To change context, use `kubectl config use-context <workload name>`


% tanzu login --context xx.xx.62.18
? Select a server xx.xx.62.18 ()
✔  successfully logged in to management cluster using the kubeconfig xx.xx.62.18


% tanzu cluster list
  NAME      NAMESPACE  STATUS  CONTROLPLANE  WORKERS  KUBERNETES                    ROLES  PLAN
  workload1  workload  running  1/            1/      1.20.7+vmware.1-tkg.1.7fb9067  <none>


% tanzu cluster kubeconfig get workload1 -n workload --admin
Credentials of cluster 'workload1' have been saved
You can now access the cluster by running 'kubectl config use-context workload1-admin@workload1'


% kubectl config use-context workload1-admin@workload1
Switched to context "workload1-admin@workload1".


% kubectl get nodes
NAME                                      STATUS    ROLES                  AGE    VERSION
workload1-control-plane-pz6p7              Ready    control-plane,master   4h8m   v1.20.7+vmware.1
workload1-workers-nqkvn-5c996c47f6-t4qlm   Ready    <none>                 4h5m   v1.20.7+vmware.1

8.2 kubectl-vsphere 명령을 사용

또는 kubectl-vsphere 명령을 사용하여 클러스터에 액세스하고 네임스페이스와 클러스터를 선택하는 원래 방법을 사용할 수 있습니다.

% kubectl-vsphere login --server xx.xx.62.18 --vsphere-username administrator@vsphere.local \
--insecure-skip-tls-verify --tanzu-kubernetes-cluster-namespace workload \
--tanzu-kubernetes-cluster-name workload1

Logged in successfully.

You have access to the following contexts:
  xx.xx.62.18
  workload1

If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.

To change context, use kubectl config use-context <workload name>


% kubectl config get-contexts
CURRENT  NAME                            CLUSTER          AUTHINFO                                      NAMESPACE
          xx.xx.62.18                    xx.xx.62.18      wcp:xx.xx.62.18:administrator@vsphere.local
          workload                       xx.xx.62.16      wcp:xx.xx.62.16:administrator@vsphere.local   workload
*         workload1                      xx.xx.62.20      wcp:xx.xx.62.20:administrator@vsphere.local


% kubectl get nodes
NAME                                      STATUS    ROLES                  AGE    VERSION
workload1-control-plane-pz6p7              Ready    control-plane,master   4h3m   v1.20.7+vmware.1
workload1-workers-nqkvn-5c996c47f6-t4qlm   Ready    <none>                 4h     v1.20.7+vmware.1

결론적으로, Tanzu CLI를 사용하여 vSphere with Tanzu와 함께 워크로드 클러스터를 구축하는 것은 흥미로운 연습이라고 생각합니다. Tanzu CLI는 Tanzu Kubernetes 클러스터를 여러 IaaS에 구축하는 경우에 더 흥미로울 것입니다. 그중 하나가 vSphere with Tanzu입니다.

이제 VMware Cloud에서 Tanzu 서비스를 이용할 수 있습니다. VMware Cloud를 사용하면 vSphere 관리자가 기본 SDDC 인프라를 관리할 필요 없이 Tanzu Kubernetes 클러스터를 구축할 수 있습니다. 여기에서 Tanzu Services에 대해 자세히 읽어보십시오.

출처 : https://cormachogan.com/2022/02/10/deploying-a-tanzu-kubernetes-cluster-using-tanzu-cli-in-vsphere-with-tanzu/

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like

vSphere with Tanzu VM Service 살펴보기

이 게시물에서는 이제 vSphere with Tanzu에서 VM 서비스라고 하는 새로운 서비스를 살펴보겠습니다. 개발자는 이 새로운 서비스를 통해 TKG…

TCE v0.11.0 릴리즈노트

Tanzu Mission Control(TMC) 및 TCE 호환 TCE v0.11.0 릴리스의 경우 이제 관리 클러스터를 TMC에 등록할 수 있습니다. Unmanaged…