Pour permettre aux développeurs de déployer des charges de travail AI/ML sur des clusters TKGS, en tant qu'opérateur de cluster, vous configurez l'environnement Kubernetes pour prendre en charge les opérations NVIDIA vGPU.
Workflow de l'opérateur de cluster pour le déploiement de charges de travail AI/ML sur des clusters TKGS
Étape | Action | Lier |
---|---|---|
0 | Vérifiez la configuration système requise. |
Reportez-vous à la section Étape 0 pour l'opérateur : Vérification de la configuration système requise. |
1 | Téléchargez kubectl et le plug-in vSphere pour Kubectl sur le poste de travail local. | Reportez-vous à la section Étape 1 pour l'opérateur : Installation de Outils de l'interface de ligne de commande Kubernetes pour vSphere sur votre Workstation. |
2 | Utilisez kubectl pour vous connecter au cluster superviseur, qui remplit .kube/config avec le contexte du nouveau cluster superviseur. | Reportez-vous à la section Étape 2 pour l'opérateur : Connexion au cluster superviseur. |
3 | Utilisez kubectl pour faire basculer le contexte vers l'espace de noms vSphere. | Reportez-vous à la section Étape 3 pour l'opérateur : Basculement du contexte vers l'espace de noms vSphere. |
4 | Utilisez kubectl pour répertorier les classes de machine virtuelle et assurez-vous que la classe compatible avec NVIDIA vGPU est présente. | Reportez-vous à la section Étape 4 pour l'opérateur : Obtention de la classe de machine virtuelle personnalisée pour les charges de travail vGPU. |
5 | Utilisez kubectl pour répertorier les versions de Tanzu Kubernetes disponibles et assurez-vous que l'image Ubuntu est présente. | Reportez-vous à la section Étape 5 pour l'opérateur : Obtention de la version Tanzu Kubernetes d'Ubuntu pour les nœuds GPU. |
6 | Créez la spécification YAML pour le provisionnement du cluster TKGS compatible avec GPU ; spécifiez la version de TKR et la classe de machine virtuelle. | Reportez-vous à la section Étape 6 pour l'opérateur : Création du YAML pour le provisionnement du cluster TKGS compatible avec vGPU. |
7 | Provisionnez le cluster TKGS. | Reportez-vous à la section Étape 7 pour l'opérateur : Provisionnement du cluster TKGS. |
8 | Connectez-vous au cluster et vérifiez le provisionnement. | Reportez-vous à la section Étape 8 pour l'opérateur : Connexion au cluster TKGS et vérification du provisionnement. |
9 | Préparez-vous à installer l'opérateur GPU NVAIE en créant certains objets prérequis dans le cluster TKGS, notamment un espace de noms, des liaisons de rôle, un secret d'image et un configmap de licence. | Reportez-vous à la section Étape 9 pour l'opérateur : Préparation de l'installation de l'opérateur NVAIE GPU. |
10 | Installez l'opérateur NVAIE GPU dans le cluster. | Reportez-vous à la section Étape 10 pour l'opérateur : Installation de l'opérateur NVIDIA GPU dans le cluster. |
11 | Déployez des charges de travail AI/ML sur le cluster TKGS compatible avec vGPU. | Reportez-vous à la section Étape 11 pour l'opérateur : Déploiement d'une charge de travail AI/ML. |
Étape 0 pour l'opérateur : Vérification de la configuration système requise
Serveur | Description |
---|---|
vSphere Administrator a configuré l'environnement pour NVIDIA vGPU |
Reportez-vous à la section Workflow de l'administrateur vSphere pour le déploiement de charges de travail AI/ML sur des clusters TKGS (vGPU). |
Fichier OVA TKR Ubuntu | Version de Tanzu Kubernetes Ubuntu
|
Provisionneur de cluster TKG | Service Tanzu Kubernetes Grid Version de l'API : |
Opérateur NVIDIA GPU |
Opérateur GPU v1.8.0 |
Conteneur de pilote NVIDIA GPU |
|
Étape 1 pour l'opérateur : Installation de Outils de l'interface de ligne de commande Kubernetes pour vSphere sur votre Workstation
Téléchargez et installez les Outils de l'interface de ligne de commande Kubernetes pour vSphere .
Si vous utilisez Linux, vous pouvez exécuter la commande suivante pour télécharger les outils.
curl -LOk https://${SC_IP}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
Pour des commandes supplémentaires, consultez Télécharger et installer les Outils de l'interface de ligne de commande Kubernetes pour vSphere.
Étape 2 pour l'opérateur : Connexion au cluster superviseur
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
Étape 3 pour l'opérateur : Basculement du contexte vers l'espace de noms vSphere
kubectl config get-contexts
kubectl config use-context TKGS-GPU-CLUSTER-NAMESPACE
Étape 4 pour l'opérateur : Obtention de la classe de machine virtuelle personnalisée pour les charges de travail vGPU
kubectl get virtualmachineclassbindings
Étape 5 pour l'opérateur : Obtention de la version Tanzu Kubernetes d'Ubuntu pour les nœuds GPU
kubectl get tanzukubernetesreleases
kubectl get tkr
Étape 6 pour l'opérateur : Création du YAML pour le provisionnement du cluster TKGS compatible avec vGPU
Créez le fichier YAML pour le provisionnement d'un cluster Tanzu Kubernetes.
Commencez par l'un des exemples ci-dessous. Utilisez les informations que vous avez collectées à partir de la sortie des commandes précédentes pour personnaliser la spécification de cluster. Reportez-vous à la liste complète des paramètres de configuration : API TKGS v1alpha2 pour le provisionnement des clusters Tanzu Kubernetes.
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
Étape 7 pour l'opérateur : Provisionnement du cluster TKGS
kubectl apply -f CLUSTER-NAME.yamlPar exemple :
kubectl apply -f tkgs-gpu-cluster-1.yaml
kubectl get tanzukubernetesclusters -n NAMESPACE
Étape 8 pour l'opérateur : Connexion au cluster TKGS et vérification du provisionnement
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
Étape 9 pour l'opérateur : Préparation de l'installation de l'opérateur NVAIE GPU
- Créez l'espace de noms Kubernetes
gpu-operator-resources
. Il est recommandé de toujours déployer tout ce qui se trouve dans cet espace de noms.kubectl create ns gpu-operator-resources
- Créez des liaisons de rôles.
La stratégie de sécurité de l'espace est activée sur les clusters Tanzu Kubernetes.
Créez 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
Appliquez la liaison de rôle.kubectl apply -f rolebindings.yaml
Créez 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
Appliquez la liaison de rôle :kubectl apply -f post-rolebindings.yaml
- Créez un secret d'image avec des informations d'identification NGC qui peuvent être utilisées par Docker pour extraire des images de conteneur du catalogue NVIDIA GPU Cloud.
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
- Créez un fichier configmap pour le License Server NVIDIA.
kubectl create configmap licensing-config -n gpu-operator-resources --from-file=gridd.conf
Le
gridd.conf
fait référence à l'adresse du License Server NVIDIA, par exemple :# Description: Set License Server Address # Data type: string # Format: "<address>" ServerAddress=<place_holder>
Étape 10 pour l'opérateur : Installation de l'opérateur NVIDIA GPU dans le cluster
- Installez Helm en vous référant à la documentation Helm.
- Ajoutez le référentiel Helm d'
gpu-operator
suivant :helm repo add nvidia https://nvidia.github.io/gpu-operator
- Obtenez l'opérateur NVAIE GPU en exécutant la commande suivante :
Si nécessaire, remplacez les valeurs des variables d'environnement par celles qui correspondent à votre environnement.
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
Étape 11 pour l'opérateur : Déploiement d'une charge de travail AI/ML
Le catalogue NVIDIA GPU Cloud propose plusieurs images de conteneur prêtes à l'emploi que vous pouvez utiliser pour exécuter des charges de travail AI/ML sur vos clusters Tanzu Kubernetes compatibles avec vGPU. Pour plus d'informations sur les images disponibles, reportez-vous à la documentation NGC.