개발자가 TKGS 클러스터에 AI/ML 워크로드를 배포할 수 있도록 하려면 클러스터 운영자가 NVIDIA vGPU 작업을 지원하도록 Kubernetes 환경을 구성해야 합니다.
TKGS 클러스터에 AI/ML 워크로드를 배포하기 위한 클러스터 운영자 워크플로
단계 | 작업 | 연결 |
---|---|---|
0 | 시스템 요구 사항을 검토합니다. |
운영자 0단계: 시스템 요구 사항 검토의 내용을 참조하십시오. |
1 | kubectl 및 kubectl용 vSphere 플러그인을 로컬 워크스테이션에 다운로드합니다. | 운영자 1단계: 워크스테이션에 vSphere에 대한 Kubernetes CLI 도구 설치의 내용을 참조하십시오. |
2 | kubectl을 사용하여 감독자 클러스터에 로그인합니다. 그러면 .kube/config가 새 감독자 클러스터의 컨텍스트로 채워집니다. | 운영자 2단계: 감독자 클러스터에 로그인의 내용을 참조하십시오. |
3 | kubectl을 사용하여 컨텍스트를 vSphere 네임스페이스로 전환합니다. | 운영자 3단계: vSphere 네임스페이스로 컨텍스트 전환의 내용을 참조하십시오. |
4 | kubectl을 사용하여 VM 클래스를 나열하고 NVIDIA vGPU 지원 클래스가 있는지 확인합니다. | 운영자 4단계: vGPU 워크로드에 대한 사용자 지정 VM 클래스 가져오기의 내용을 참조하십시오. |
5 | kubectl을 사용하여 사용 가능한 Tanzu Kubernetes 릴리스를 나열하고 Ubuntu 이미지가 있는지 확인합니다. | 운영자 5단계: GPU 노드용 Ubuntu Tanzu Kubernetes 릴리스 가져오기의 내용을 참조하십시오. |
6 | GPU 지원 TKGS 클러스터를 프로비저닝하기 위한 YAML 규격을 만듭니다. TKR 버전 및 VM 클래스를 지정합니다. | 운영자 6단계: vGPU 지원 TKGS 클러스터 프로비저닝을 위한 YAML 만들기의 내용을 참조하십시오. |
7 | TKGS 클러스터를 프로비저닝합니다. | 운영자 7단계: TKGS 클러스터 프로비저닝의 내용을 참조하십시오. |
8 | 클러스터에 로그인하고 프로비저닝을 확인합니다. | 운영자 8단계: TKGS 클러스터에 로그인하고 프로비저닝 확인의 내용을 참조하십시오. |
9 | 네임스페이스, 역할 바인딩, 이미지 암호, 라이센스 configmap을 비롯한 몇 가지 사전 요구 사항 개체를 TKGS 클러스터에 생성하여 NVAIE GPU Operator 설치를 준비합니다. | 운영자 9단계: NVAIE GPU Operator 설치 준비의 내용을 참조하십시오. |
10 | 클러스터에 NVAIE GPU Operator를 설치합니다. | 운영자 10단계: 클러스터에 NVIDIA GPU Operator 설치의 내용을 참조하십시오. |
11 | AI/ML 워크로드를 vGPU 지원 TKGS 클러스터에 배포합니다. | 운영자 11단계: AI/ML 워크로드 배포의 내용을 참조하십시오. |
운영자 0단계: 시스템 요구 사항 검토
요구 사항 | 설명 |
---|---|
vSphere 관리자가 NVIDIA vGPU에 대한 환경을 설정함 |
TKGS 클러스터(vGPU)에 AI/ML 워크로드를 배포하기 위한 vSphere 관리자 워크플로 항목을 참조하십시오. |
TKR Ubuntu OVA | Tanzu Kubernetes 릴리스 Ubuntu
|
TKG 클러스터 프로비저너 | Tanzu Kubernetes Grid 서비스 API 버전: |
NVIDIA GPU Operator |
GPU Operator v1.8.0 |
NVIDIA GPU 드라이버 컨테이너 |
|
운영자 1단계: 워크스테이션에 vSphere에 대한 Kubernetes CLI 도구 설치
vSphere에 대한 Kubernetes CLI 도구를 다운로드하고 설치합니다.
Linux를 사용하는 경우 다음 명령을 실행하여 도구를 다운로드할 수 있습니다.
curl -LOk https://${SC_IP}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
추가 지침은 vSphere에 대한 Kubernetes CLI 도구 다운로드 및 설치 항목을 참조하십시오.
운영자 2단계: 감독자 클러스터에 로그인
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
운영자 3단계: vSphere 네임스페이스로 컨텍스트 전환
kubectl config get-contexts
kubectl config use-context TKGS-GPU-CLUSTER-NAMESPACE
운영자 4단계: vGPU 워크로드에 대한 사용자 지정 VM 클래스 가져오기
kubectl get virtualmachineclassbindings
운영자 5단계: GPU 노드용 Ubuntu Tanzu Kubernetes 릴리스 가져오기
kubectl get tanzukubernetesreleases
kubectl get tkr
운영자 6단계: vGPU 지원 TKGS 클러스터 프로비저닝을 위한 YAML 만들기
Tanzu Kubernetes 클러스터 프로비저닝을 위한 YAML 파일을 생성합니다.
아래 예제 중 하나로 시작합니다. 이전 명령의 출력에서 수집한 정보를 사용하여 클러스터 규격을 사용자 지정합니다. 구성 매개 변수의 전체 목록을 참조하십시오. Tanzu Kubernetes 클러스터 프로비저닝을 위한 TKGS v1alpha2 API.
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: #cluster name name: tkgs-cluster-gpu-a100 #target vsphere namespace namespace: tkgs-gpu-operator spec: topology: controlPlane: replicas: 3 #storage class for control plane nodes #use `kubectl describe storageclasses` #to get available pvcs storageClass: vwt-storage-policy vmClass: guaranteed-medium #TKR NAME for Ubuntu ova supporting GPU tkr: reference: name: 1.20.8---vmware.1-tkg.1 nodePools: - name: nodepool-a100-primary replicas: 3 storageClass: vwt-storage-policy #custom VM class for vGPU vmClass: class-vgpu-a100 #TKR NAME for Ubuntu ova supporting GPU tkr: reference: name: 1.20.8---vmware.1-tkg.1 - name: nodepool-a100-secondary replicas: 3 vmClass: class-vgpu-a100 storageClass: vwt-storage-policy #TKR NAME for Ubuntu ova supporting GPU tkr: reference: name: 1.20.8---vmware.1-tkg.1 settings: storage: defaultClass: vwt-storage-policy network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: managedcluster.local
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkc namespace: tkg-ns-auto spec: distribution: fullVersion: v1.20.8+vmware.1-tkg.1 topology: controlPlane: replicas: 3 storageClass: vwt-storage-policy tkr: reference: name: v1.20.8---vmware.1-tkg.1 vmClass: best-effort-medium nodePools: - name: workers replicas: 3 storageClass: k8s-storage-policy tkr: reference: name: v1.20.8---vmware.1-tkg.1 vmClass: vmclass-vgpu volumes: - capacity: storage: 50Gi mountPath: /var/lib/containerd name: containerd - capacity: storage: 50Gi mountPath: /var/lib/kubelet name: kubelet - name: nodepool-1 replicas: 1 storageClass: vwt-storage-policy vmClass: best-effort-medium
apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: annotations: labels: run.tanzu.vmware.com/tkr: v1.20.8---vmware.1-tkg.1 name: tkgs-gpu-direct-rdma namespace: tkgs-ns spec: settings: network: cni: name: antrea pods: cidrBlocks: - 192.168.0.0/16 serviceDomain: cluster.local services: cidrBlocks: - 10.96.0.0/12 topology: controlPlane: replicas: 3 storageClass: tkgs-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.20.8---vmware.1-tkg.1 nodePools: - name: workers replicas: 5 storageClass: tkgs-storage-policy vmClass: claire-gpu-direct-rdma volumes: - capacity: storage: 50Gi mountPath: /var/lib/containerd name: containerd - capacity: storage: 50Gi mountPath: /var/lib/kubelet name: kubelet tkr: reference: name: v1.20.8---vmware.1-tkg.1
운영자 7단계: TKGS 클러스터 프로비저닝
kubectl apply -f CLUSTER-NAME.yaml예:
kubectl apply -f tkgs-gpu-cluster-1.yaml
kubectl get tanzukubernetesclusters -n NAMESPACE
운영자 8단계: TKGS 클러스터에 로그인하고 프로비저닝 확인
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME \ --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
kubectl api-resources
운영자 9단계: NVAIE GPU Operator 설치 준비
- Kubernetes 네임스페이스
gpu-operator-resources
를 생성합니다. 가장 좋은 방법은 항상 모든 항목을 이 네임스페이스에 배포하는 것입니다.kubectl create ns gpu-operator-resources
- 역할 바인딩을 생성합니다.
Tanzu Kubernetes 클러스터에는 포드 보안 정책이 사용되도록 설정되어 있습니다.
rolebidings.yaml을 생성합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: psp:vmware-system-privileged:default namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: psp:vmware-system-privileged subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:nodes - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts
역할 바인딩을 적용합니다.kubectl apply -f rolebindings.yaml
post-rolebindings.yaml을 생성합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: psp:vmware-system-privileged:gpu-operator-resources namespace: gpu-operator-resources roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: psp:vmware-system-privileged subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:serviceaccounts
역할 바인딩을 적용합니다.kubectl apply -f post-rolebindings.yaml
- Docker가 NVIDIA GPU Cloud 카탈로그에서 컨테이너 이미지를 끌어오는 데 사용할 수 있는 NGC 자격 증명을 사용하여 이미지 암호를 생성합니다.
kubectl create secret docker-registry registry-secret \ --docker-server=server-name --docker-username='$oauthtoken' \ --docker-password=<place_holder> \ --docker-email=email-name -n gpu-operator-resources
- NVIDIA 라이센스 서버에 대한 configmap을 생성합니다.
kubectl create configmap licensing-config -n gpu-operator-resources --from-file=gridd.conf
gridd.conf
는 NVIDIA 라이센스 서버 주소를 참조합니다. 예:# Description: Set License Server Address # Data type: string # Format: "<address>" ServerAddress=<place_holder>
운영자 10단계: 클러스터에 NVIDIA GPU Operator 설치
- Helm 설명서를 참조하여 Helm을 설치합니다.
gpu-operator
Helm 저장소를 추가합니다.helm repo add nvidia https://nvidia.github.io/gpu-operator
- 다음 명령을 실행하여 NVAIE GPU Operator를 설치합니다.
필요한 경우 환경 변수 값을 환경과 일치하는 값으로 대체합니다.
export PRIVATE_REGISTRY="private/registry/path" export OS_TAG=ubuntu20.04 export VERSION=460.73.01 export VGPU_DRIVER_VERSION=460.73.01-grid export NGC_API_KEY=ZmJjMHZya...LWExNTRi export REGISTRY_SECRET_NAME=registry-secret helm install nvidia/gpu-operator \ --set driver.repository=$PRIVATE_REGISTRY \ --set driver.version=$VERSION \ --set driver.imagePullSecrets={$REGISTRY_SECRET_NAME} \ --set operator.defaultRuntime=containerd \ --set driver.licensingConfig.configMapName=licensing-config
운영자 11단계: AI/ML 워크로드 배포
NVIDIA GPU Cloud 카탈로그는 vGPU 지원 Tanzu Kubernetes 클러스터에서 AI/ML 워크로드를 실행하는 데 사용할 수 있는 몇 가지 기본 제공 컨테이너 이미지를 제공합니다. 사용 가능한 이미지에 대한 자세한 내용은 NGC 설명서를 참조하십시오.