K8s-device-plugin#
K8s-device-plugin - компонент DropApp, который позволяет управлять устройствами в кластере, такими как GPU. K8s-device-plugin автоматически обнаруживает и регистрирует устройства в кластере, делая их доступными для использования в pods.
Плагин k8s-device-plugin осуществляет следующие функции:
отслеживание графических процессоров на каждом node кластера;
отслеживание состояния графических процессоров;
запуск контейнеров с поддержкой графического процессора в кластере.
Подготовка nodes графического процессора (опциональная возможность на усмотрение пользователя)#
Предварительные условия подготовки nodes:
драйверы NVIDIA и набор инструментов nvidia-container предварительно установлены (в состав DropApp не входят);
среда nvidia-container-runtime настроена.
Включите поддержку графического процессора, развернув набор демонов:
kubectl create -f https://<repoexample.ru>/NVIDIA/k8s-device-plugin/v0.14.5/deployments/static/nvidia-device-plugin.yml # Укажите актуальный путь до локального репозиторияСодержание манифеста
nvidia-device-plugin.ymlбудет следующим:apiVersion: apps/v1 kind: DaemonSet metadata: name: nvidia-device-plugin-daemonset namespace: kube-system spec: selector: matchLabels: name: nvidia-device-plugin-ds updateStrategy: type: RollingUpdate template: metadata: labels: name: nvidia-device-plugin-ds spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule priorityClassName: "system-node-critical" containers: - image: nvcr.io/nvidia/k8s-device-plugin:v 0.12.5 name: nvidia-device-plugin-ctr env: - name: FAIL_ON_INIT_ERROR value: "false" securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] volumeMounts: - name: device-plugin mountPath: /var/lib/kubelet/device-plugins volumes: - name: device-plugin hostPath: path: /var/lib/kubelet/device-pluginsЗапустите pod для графического процессора:
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: restartPolicy: Never containers: - name: cuda-container image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2 resources: limits: nvidia.com/gpu: 1 # requesting 1 GPU tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule EOFПроверьте корректность запуска:
kubectl logs gpu-pod [Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED Done