이 항목에서는 Microsoft Azure에만 해당되고 클러스터의 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격에서 완전히 구성할 수 없는 기능을 사용하도록 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다.
구성 파일 및 개체 규격을 사용하여 Azure에서 워크로드 클러스터를 구성하는 방법에 대한 자세한 내용은 Azure 클러스터 구성 파일을 참조하십시오.
중요Tanzu Kubernetes Grid v2.4.x는 Azure에서 TKG 워크로드 클러스터 생성을 지원하는 마지막 TKG 버전입니다. Azure에서 TKG 워크로드 클러스터를 생성하는 기능은 Tanzu Kubernetes Grid v2.5 릴리스에서 제거됩니다.
지금부터는 VMware Tanzu Mission Control을 사용하여 Azure에서 새 TKG 워크로드 클러스터를 생성하는 대신 네이티브 Azure AKS 클러스터를 생성하는 것이 좋습니다. Tanzu Mission Control을 사용하여 네이티브 Azure AKS 클러스터를 생성하는 방법에 대한 자세한 내용은 Tanzu Mission Control 설명서에서 Azure AKS 클러스터의 수명 주기 관리를 참조하십시오.
자세한 내용은 VMware Tanzu Kubernetes Grid v2.4 Release Notes에서 AWS 및 Azure에서 TKG 관리 및 워크로드 클러스터의 사용 중단을 참조하십시오.
기본적으로 Azure 관리 및 워크로드 클러스터는 공용입니다. 그러나 API 서버가 Azure ILB(내부 로드 밸런서)를 사용하므로 클러스터의 자체 VNet 또는 피어링된 VNet 내에서만 액세스할 수 있도록 개인으로 구성할 수도 있습니다.
Azure 클러스터를 개인으로 설정하려면 구성 파일에 다음을 포함합니다.
AZURE_ENABLE_PRIVATE_CLUSTER
을 true
로 설정합니다.
(선택 사항) AZURE_FRONTEND_PRIVATE_IP
클러스터의 로드 밸런서의 내부 주소로 설정합니다.
10.0.0.100
입니다.다른 Azure 개인 클러스터에 사용하는 VNet 및 서브넷에 AZURE_VNET_NAME
, AZURE_VNET_CIDR
, AZURE_CONTROL_PLANE_SUBNET_NAME
, AZURE_CONTROL_PLANE_SUBNET_CIDR
, AZURE_NODE_SUBNET_NAME
, AZURE_NODE_SUBNET_CIDR
을 설정합니다.
(선택 사항) 제어부 및 Worker 노드가 Azure 인터넷 연결을 통해 인터넷에 액세스할 수 있도록 하려면 AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB
와 AZURE_ENABLE_NODE_OUTBOUND_LB
를 true
로 설정합니다.
기본적으로, Azure 개인 클러스터는 로드 밸런서 유형의 각 Kubernetes 서비스에 공용 IP 주소를 생성합니다. 개인 IP 주소를 대신 사용하도록 로드 밸런서 서비스를 구성하려면 배포 매니페스트에 다음 주석을 추가합니다.
---
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
자세한 내용은 클러스터 API 제공자 Azure 설명서의 API 서버 끝점을 참조하십시오.
Tanzu Kubernetes Grid는 여러 대상 플랫폼 계정에서 워크로드 클러스터를 실행할 수 있습니다. 예를 들어 서로 다른 팀 간에 클라우드 사용량을 분할하거나 프로덕션, 스테이징, 개발 워크로드에 서로 다른 보안 프로필을 적용할 수 있습니다.
워크로드 클러스터를 관리 클러스터를 배포하는 데 사용되는 계정과 다른 대체 Azure 서비스 주체 계정에 배포하려면 다음을 수행합니다.
대체 Azure 계정을 생성합니다. 이 계정의 세부 정보를 사용하여 이후 단계에서 AzureClusterIdentity를 생성합니다. Azure 서비스 주체 계정 생성에 대한 자세한 내용은 Azure 설명서의 방법: 포털을 사용하여 리소스에 액세스할 수 있는 Azure AD 애플리케이션 및 서비스 주체 생성을 참조하십시오.
관리 클러스터에 kubectl
컨텍스트를 설정합니다.
kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
여기서 MY-MGMT-CLUSTER
는 관리 클러스터의 이름입니다.
다음 내용으로 secret.yaml
파일을 생성합니다.
apiVersion: v1
kind: Secret
metadata:
name: SECRET-NAME
type: Opaque
data:
clientSecret: CLIENT-SECRET
형식 설명:
SECRET-NAME
은 클라이언트 암호의 암호 이름입니다.CLIENT-SECRET
는 서비스 주체 ID의 클라이언트 암호입니다. 클라이언트 암호는 base64로 인코딩되어야 합니다.파일을 사용하여 Secret
개체를 생성합니다.
kubectl apply -f secret.yaml
다음 내용으로 identity.yaml
파일을 생성합니다.
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: AzureClusterIdentity
metadata:
name: EXAMPLE-IDENTITY
namespace: EXAMPLE-NAMESPACE
spec:
type: ManualServicePrincipal
tenantID: AZURE-TENANT-ID
clientID: CLIENT-ID
clientSecret: {"name":"SECRET-NAME","namespace":"default"}
allowedNamespaces:
list:
- CLUSTER-NAMESPACE-1
- CLUSTER-NAMESPACE-1
형식 설명:
EXAMPLE-IDENTITY
는 AzureClusterIdentity에 사용할 이름입니다.EXAMPLE-NAMESPACE
는 AzureClusterIdentity의 네임스페이스입니다.AZURE-TENANT-ID
는 Azure 테넌트 ID입니다.CLIENT-ID
는 Azure AD 애플리케이션의 클라이언트 ID(AppID라고도 함)입니다.SECRET-NAME
은 클라이언트 암호의 암호 이름입니다.CLUSTER-NAMESPACE-1
및 CLUSTER-NAMESPACE-2
는 클러스터에서 ID를 사용하도록 허용되는 Kubernetes 네임스페이스입니다. 이러한 네임스페이스는 네임스페이스 어레이를 사용하여 선택할 수 있습니다.파일을 사용하여 AzureClusterIdentity
개체를 생성합니다.
kubectl apply -f identity.yaml
이제 관리 클러스터는 새 AzureClusterIdentity
개체를 사용하여 워크로드 클러스터를 대체 계정에 배포할 수 있습니다.
대체 Azure 계정을 사용하는 워크로드 클러스터를 생성하려면 클러스터 구성 파일에서 다음 변수를 포함합니다.
AZURE_IDENTITY_NAME: EXAMPLE-IDENTITY
AZURE_IDENTITY_NAMESPACE: EXAMPLE-NAMESPACE
형식 설명:
EXAMPLE-IDENTITY
는 AzureClusterIdentity에 사용할 이름입니다.EXAMPLE-NAMESPACE
는 AzureClusterIdentity의 네임스페이스입니다.워크로드 클러스터를 생성한 후 대체 계정을 사용하여 Azure Portal에 로그인하면 클러스터가 실행 중이어야 합니다.
Azure에 NVIDIA GPU 지원 워크로드 클러스터를 배포하는 방법에는 두 가지가 있습니다.
ClusterResourceSet
(CRS)을 사용하여 관리 클러스터를 구성합니다.아래 하위 섹션에서는 이러한 두 가지 접근 방식과 GPU 지원 클러스터를 테스트하는 방법을 설명합니다.
워크로드 클러스터를 배포하고 수동으로 구성하여 Azure에서 사용할 수 있는 NVIDIA GPU VM을 활용하려면 다음을 수행합니다.
클러스터용 구성 파일에서 Worker 노드에 AZURE_NODE_MACHINE_TYPE
을 설정하여 Standard_NC4as_T4_v3
와 같은 GPU 호환 VM 유형으로 설정합니다.
클러스터 구성 파일을 사용하여 클러스터를 배포합니다.
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
여기서 MY-GPU-CLUSTER
는 클러스터에 제공하는 이름입니다.
클러스터에 GPU 클러스터 정책 및 GPU 연산자를 설치합니다.
현재 컨텍스트가 아닌 경우 kubectl context
를 클러스터로 설정합니다.
클러스터 API 제공자 Azure 저장소에서 필요한 NVIDIA GPU 리소스를 다운로드하고 현재 디렉토리에 저장합니다.
클러스터 정책을 적용합니다.
kubectl apply clusterpolicy-crd.yaml
GPU 연산자를 적용합니다.
kubectl apply gpu-operator-components.yaml
kubectl get pods -A
을 실행합니다. default
네임스페이스의 gpu-operator-
포드 및 gpu-operator-resources
네임스페이스의 nvidia-
포드 목록이 표시됩니다.
참고이 기능은 지원되지 않는 기술 미리보기 상태입니다. TKG 기능 상태를 참조하십시오.
클러스터 매니페스트의 레이블에 gpu: nvidia
를 추가할 때마다 GPU 지원 워크로드 클러스터를 자동으로 생성하도록 관리 클러스터를 구성할 수 있습니다. 이렇게 하려면 CRS(ClusterResourceSet
)를 설치하고 다음과 같이 활성화합니다.
GPU 클러스터를 생성하도록 관리 클러스터를 구성하려면 다음을 수행합니다.
VMware {code} Sample Exchange에서 TKG용 GPU CRS를 검색하고 Tanzu Kubernetes Grid v1.4용 gpu-crs.yaml
파일을 다운로드합니다.
kubectl
컨텍스트를 관리 클러스터의 컨텍스트로 설정합니다.
kubectl config use-context my-management-cluster-admin@my-management-cluster
--server-side
옵션을 사용하여 관리 클러스터에 CRS 파일을 적용하여 ConfigMap
데이터의 큰 크기를 처리합니다.
kubectl apply -f gpu-crs.yaml --server-side
GPU 워크로드 클러스터를 생성하려면 다음을 수행합니다.
클러스터용 구성 파일에서 Worker 노드에 AZURE_NODE_MACHINE_TYPE
을 설정하여 Standard_NC4as_T4_v3
와 같은 GPU 호환 VM 유형으로 설정합니다.
--dry-run
옵션과 함께 tanzu cluster create
를 사용하여 클러스터 구성 파일에서 배포 매니페스트를 생성합니다.
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG --dry-run > MY-GPU-CLUSTER-MANIFEST
여기서 MY-GPU-CLUSTER
는 클러스터에 제공하는 이름입니다.
클러스터를 kubectl apply
에 전달하여 생성합니다.
kubectl apply -f MY-GPU-CLUSTER-MANIFEST
kubectl get pods -A
을 실행합니다. default
네임스페이스의 gpu-operator-
포드 및 gpu-operator-resources
네임스페이스의 nvidia-
포드 목록이 표시됩니다.
GPU 지원 클러스터를 테스트하려면 다음을 수행합니다.
NVIDIA 설명서의 CUDA VectorAdd 벡터 추가 테스트를 실행하여 GPU 처리를 테스트합니다.
GPU 연산자를 테스트합니다.
워크로드 클러스터의 Worker 노드 수를 스케일 업합니다.
tanzu cluster scale MY-GPU-CLUSTER -w 2
kubectl get pods -A
를 다시 실행합니다. 추가된 노드에 대해 추가 gpu-operator-
및 nvidia-
포드가 표시됩니다.