Per consentire agli sviluppatori di distribuire carichi di lavoro AI/ML nei cluster di TKG, l'operatore del cluster può configurare l'ambiente Kubernetes in modo che supporti le operazioni di NVIDIA vGPU.
Workflow dell'operatore del cluster per la distribuzione di carichi di lavoro AI/ML nei cluster di TKG
Passaggio | Azione | Collega |
---|---|---|
0 | Verificare i requisiti di sistema. |
Vedere Passaggio 0 dell'operatore: verificare i requisiti di sistema. |
1 | Scaricare kubectl e vSphere Plugin per Kubectl nella workstation locale. | Vedere Passaggio 1 dell'operatore: installare Strumenti CLI Kubernetes di vSphere nella workstation. |
2 | Utilizzare kubectl per accedere al cluster supervisore, che compila .kube/config con il contesto per il nuovo cluster supervisore. | Vedere Passaggio 2 dell'operatore: accedere al cluster supervisore. |
3 | Utilizzare kubectl per passare al contesto dello spazio dei nomi di vSphere. | Vedere Passaggio 3 dell'operatore: passare al contesto dello spazio dei nomi di vSphere. |
4 | Utilizzare kubectl per elencare le classi di macchine virtuali e verificare che sia presente la classe abilitata per NVIDIA vGPU. | Vedere Passaggio 4 dell'operatore: recuperare la classe della macchina virtuale personalizzata per i carichi di lavoro della vGPU. |
5 | Utilizzare kubectl per elencare le versioni di Tanzu Kubernetes disponibili e verificare che sia presente l'immagine Ubuntu. | Vedere Passaggio 5 dell'operatore: recuperare la versione Tanzu Kubernetes di Ubuntu per i nodi GPU. |
6 | Creare la specifica YAML per il provisioning del cluster di TKG abilitato per GPU. Specificare la versione di TKR e la classe della macchina virtuale. | Vedere Passaggio 6 dell'operatore: creare il file YAML per il provisioning del cluster di TKG abilitato per vGPU. |
7 | Eseguire il provisioning del cluster di TKG. | Vedere Passaggio 7 dell'operatore: eseguire il provisioning del cluster di TKG. |
8 | Accedere al cluster e verificare il provisioning. | Vedere Passaggio 8 dell'operatore: accedere al cluster di TKG e verificare il provisioning. |
9 | Preparare l'installazione dell'operatore della GPU NVAIE creando alcuni oggetti prerequisiti nel cluster di TKG, tra cui uno spazio dei nomi, i binding dei ruoli, il segreto dell'immagine e la mappa di configurazione della licenza. | Vedere Passaggio 9 dell'operatore: preparazione all'installazione dell'operatore della GPU NVAIE. |
10 | Installare l'operatore della GPU NVAIE nel cluster. | Vedere Passaggio 10 dell'operatore: installare NVIDIA GPU Operator nel cluster. |
11 | Distribuire i carichi di lavoro AI/ML nel cluster di TKG abilitato per vGPU. | Vedere Passaggio 11 dell'operatore: distribuire un carico di lavoro AI/ML. |
Passaggio 0 dell'operatore: verificare i requisiti di sistema
Requisito | Descrizione |
---|---|
L'amministratore di vSphere ha configurato l'ambiente per NVIDIA vGPU |
|
OVA Ubuntu TKR | Release di Tanzu Kubernetes Ubuntu
|
Strumento di provisioning del cluster di TKG | Servizio Tanzu Kubernetes Grid Versione API: |
Operatore GPU NVIDIA |
Operatore GPU v1.8.0 |
Container driver GPU NVIDIA |
|
Passaggio 1 dell'operatore: installare Strumenti CLI Kubernetes di vSphere nella workstation
Scaricare e installare Strumenti CLI Kubernetes di vSphere.
Se si utilizza Linux, è possibile eseguire il comando seguente per scaricare gli strumenti.
curl -LOk https://${SC_IP}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
Per ulteriori istruzioni, vedere Download e installazione di Strumenti CLI Kubernetes di vSphere.
Passaggio 2 dell'operatore: accedere al cluster supervisore
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
Passaggio 3 dell'operatore: passare al contesto dello spazio dei nomi di vSphere
kubectl config get-contexts
kubectl config use-context TKGS-GPU-CLUSTER-NAMESPACE
Passaggio 4 dell'operatore: recuperare la classe della macchina virtuale personalizzata per i carichi di lavoro della vGPU
kubectl get virtualmachineclassbindings
Passaggio 5 dell'operatore: recuperare la versione Tanzu Kubernetes di Ubuntu per i nodi GPU
kubectl get tanzukubernetesreleases
kubectl get tkr
Passaggio 6 dell'operatore: creare il file YAML per il provisioning del cluster di TKG abilitato per vGPU
Creare il file YAML per il provisioning di un cluster di Tanzu Kubernetes.
Iniziare con uno degli esempi seguenti. Utilizzare le informazioni contrassegnate dall'output dei comandi precedenti per personalizzare la specifica del cluster. Fare riferimento all'elenco completo dei parametri di configurazione: Parametri di configurazione per il provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha2 del Servizio Tanzu Kubernetes Grid.
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
Passaggio 7 dell'operatore: eseguire il provisioning del cluster di TKG
kubectl apply -f CLUSTER-NAME.yamlAd esempio:
kubectl apply -f tkgs-gpu-cluster-1.yaml
kubectl get tanzukubernetesclusters -n NAMESPACE
Passaggio 8 dell'operatore: accedere al cluster di TKG e verificare il provisioning
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
Passaggio 9 dell'operatore: preparazione all'installazione dell'operatore della GPU NVAIE
- Creare lo spazio dei nomi di Kubernetes
gpu-operator-resources
. È consigliabile distribuire sempre tutto in questo spazio dei nomi.kubectl create ns gpu-operator-resources
- Creare i binding del ruolo.
Per i cluster di Tanzu Kubernetes è abilitato il criterio di sicurezza pod.
Creare rolebindings.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
Applicare il binding del ruolo.kubectl apply -f rolebindings.yaml
Creare 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
Applicare il binding del ruolo:kubectl apply -f post-rolebindings.yaml
- Creare un segreto dell'immagine con credenziali NGC che possano essere utilizzate da Docker per estrarre le immagini di container dal catalogo di NVIDIA GPUCloud.
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
- Creare una mappa di configurazione per il server delle licenze NVIDIA.
kubectl create configmap licensing-config -n gpu-operator-resources --from-file=gridd.conf
gridd.conf
fa riferimento all'indirizzo del server delle licenze NVIDIA, ad esempio:# Description: Set License Server Address # Data type: string # Format: "<address>" ServerAddress=<place_holder>
Passaggio 10 dell'operatore: installare NVIDIA GPU Operator nel cluster
- Installare Helm facendo riferimento alla documentazione di Helm.
- Aggiungere il repository Helm
gpu-operator
.helm repo add nvidia https://nvidia.github.io/gpu-operator
- Installare NVAIE GPU Operator eseguendo il comando seguente.
Se necessario, sostituire i valori delle variabili di ambiente con quelli che corrispondono al proprio ambiente.
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
Passaggio 11 dell'operatore: distribuire un carico di lavoro AI/ML
Il catalogo di NVIDIA GPU Cloud offre diverse immagini di container predefinite che è possibile utilizzare per eseguire carichi di lavoro AI/ML nei cluster di Tanzu Kubernetes abilitati per vGPU. Per ulteriori informazioni sulle immagini disponibili, vedere la documentazione di NGC.