Para permitir que os desenvolvedores implantem cargas de trabalho de AI / ML em clusters TKGS, como operador de cluster, você configura o ambiente do Kubernetes para oferecer suporte a operações NVIDIA vGPU.
Fluxo de trabalho do operador de cluster para a implantação de cargas de trabalho de AI / ML em clusters TKGS
Etapa | Ação | Link |
---|---|---|
0 | Revise os requisitos do sistema. |
Consulte o Etapa 0 do operador: revisão dos requisitos do sistema. |
1 | Baixe kubectl e vSphere Plugin for Kubectl para a estação de trabalho local. | Consulte o Etapa 1 do operador: instalar o Kubernetes CLI Tools for vSphere na sua estação de trabalho. |
2 | Use kubectl para fazer login no Cluster de Supervisor, que preenche .kube / config com o contexto para o novo Cluster de Supervisor. | Consulte o Etapa 2 do operador: fazer login no cluster de supervisor. |
3 | Use kubectl para alternar o contexto para o Namespace do vSphere. | Consulte o Etapa 3 do operador: alternar o contexto para o namespace do vSphere. |
4 | Use kubectl para listar classes de VM e verificar se a classe habilitada para NVIDIA vGPU está presente. | Consulte o Etapa 4 do operador: obter a classe de VM personalizada para cargas de trabalho vGPU. |
5 | Use kubectl para listar as versões disponíveis do Tanzu Kubernetes e verifique se a imagem do Ubuntu está presente. | Consulte o Etapa 5 do operador: obter a versão do Ubuntu Tanzu Kubernetes para nós de GPU. |
6 | Elabore a especificação YAML para provisionar o cluster TKGS habilitado para GPU; especifique a versão do TKR e a classe da VM. | Consulte o Etapa 6 do operador: criar o YAML para provisionar o cluster TKGS habilitado para vGPU. |
7 | Provisione o cluster TKGS. | Consulte o Etapa 7 do operador: provisionar o cluster TKGS. |
8 | Faça login no cluster e verifique o provisionamento. | Consulte o Etapa 8 do operador: fazer login no cluster TKGS e verificar o provisionamento. |
9 | Prepare-se para instalar o NVAIE GPU Operator criando alguns objetos de pré-requisito no cluster TKGS, incluindo um namespace, associações de função, segredo de imagem e configmap de licença. | Consulte o Etapa 9 do operador: preparar para instalar o operador NVAIE GPU. |
10 | Instale o NVAIE GPU Operator no cluster. | Consulte o Etapa 10 do operador: instalar o operador de GPU NVIDIA no cluster. |
11 | Implante cargas de trabalho de AI / ML no cluster TKGS habilitado para vGPU. | Consulte o Etapa 11 do operador: implantar uma carga de trabalho de IA / ML. |
Etapa 0 do operador: revisão dos requisitos do sistema
Requisito | Descrição |
---|---|
O vSphere Administrator configurou o ambiente para NVIDIA vGPU |
|
TKR Ubuntu OVA | Tanzu Kubernetes release Ubuntu
|
Provisionador de Cluster TKG | Tanzu Kubernetes Grid Service Versão da API: |
NVIDIA GPU Operator |
GPU Operator v1.8.0 |
Contêiner de driver de GPU NVIDIA |
|
Etapa 1 do operador: instalar o Kubernetes CLI Tools for vSphere na sua estação de trabalho
Baixe e instale o Kubernetes CLI Tools for vSphere.
Se você estiver usando o Linux, poderá executar o seguinte comando para baixar as ferramentas.
curl -LOk https://${SC_IP}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
Para obter orientação adicional, consulte Baixe e instale o Kubernetes CLI Tools for vSphere.
Etapa 2 do operador: fazer login no cluster de supervisor
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
Etapa 3 do operador: alternar o contexto para o namespace do vSphere
kubectl config get-contexts
kubectl config use-context TKGS-GPU-CLUSTER-NAMESPACE
Etapa 4 do operador: obter a classe de VM personalizada para cargas de trabalho vGPU
kubectl get virtualmachineclassbindings
Etapa 5 do operador: obter a versão do Ubuntu Tanzu Kubernetes para nós de GPU
kubectl get tanzukubernetesreleases
kubectl get tkr
Etapa 6 do operador: criar o YAML para provisionar o cluster TKGS habilitado para vGPU
Construa o arquivo YAML para provisionar um cluster do Tanzu Kubernetes.
Comece com um dos exemplos abaixo. Use as informações coletadas da saída dos comandos anteriores para personalizar a especificação do cluster. Consulte a lista completa de parâmetros de configuração: Parâmetros de configuração para o provisionamento de clusters Tanzu Kubernetes usando a API do Tanzu Kubernetes Grid Service v1alpha2.
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
Etapa 7 do operador: provisionar o cluster TKGS
kubectl apply -f CLUSTER-NAME.yamlPor exemplo:
kubectl apply -f tkgs-gpu-cluster-1.yaml
kubectl get tanzukubernetesclusters -n NAMESPACE
Etapa 8 do operador: fazer login no cluster TKGS e verificar o provisionamento
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
Etapa 9 do operador: preparar para instalar o operador NVAIE GPU
- Crie o namespace Kubernetes
gpu-operator-resources
. Como prática recomendada, sempre implante tudo nesse namespace.kubectl create ns gpu-operator-resources
- Crie associações de função.
Os clusters Tanzu Kubernetes têm a política de segurança de pod ativada.
Crie 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
Aplique a associação de função.kubectl apply -f rolebindings.yaml
Crie 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
Aplique a associação de função:kubectl apply -f post-rolebindings.yaml
- Crie um segredo de imagem com credenciais NGC que possa ser usado pelo Docker para extrair imagens de contêiner do Catálogo de Nuvem de GPU NVIDIA .
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
- Crie um mapa de configuração para o servidor de licença NVIDIA.
kubectl create configmap licensing-config -n gpu-operator-resources --from-file=gridd.conf
A referência de
gridd.conf
ao endereço do servidor de licença NVIDIA, por exemplo:# Description: Set License Server Address # Data type: string # Format: "<address>" ServerAddress=<place_holder>
Etapa 10 do operador: instalar o operador de GPU NVIDIA no cluster
- Instale o Helm consultando a documentação do Helm .
- Adicione o repositório do
gpu-operator
Helm.helm repo add nvidia https://nvidia.github.io/gpu-operator
- Instale o NVAIE GPU Operator executando o seguinte comando.
Quando necessário, substitua os valores das variáveis de ambiente por aqueles que correspondem ao seu 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
Etapa 11 do operador: implantar uma carga de trabalho de IA / ML
O NVIDIA GPU Cloud Catalog oferece várias imagens de contêiner prontas para uso que você pode usar para executar cargas de trabalho de IA / ML em seus clusters do Tanzu Kubernetes habilitados para vGPU. Para obter mais informações sobre as imagens disponíveis, consulte a documentação do NGC .