GPU Device Plugin

This scenario kills the NVIDIA device plugin pods on GPU nodes to simulate a device plugin crash, then verifies that the pods are rescheduled and become ready.

It runs as a Pod Scenario targeted at the device plugin pods, so you use the example config below with the tool of your choice.

Prerequisites

  • A cluster with GPU nodes.
  • The NVIDIA GPU Operator installed (device plugin runs in the nvidia-gpu-operator namespace by default).
  • GPU nodes labeled nvidia.com/gpu.present=true.

How to Run

Choose your preferred method to run the GPU device plugin disruption scenario:

Example Config

Create the scenario file scenarios/kube/gpu_device_plugin.yaml:

- id: gpu-device-plugin-disruption
  config:
    namespace_pattern: ^nvidia-gpu-operator$                 # GPU Operator namespace
    label_selector: app=nvidia-device-plugin-daemonset       # device plugin pods
    node_label_selector: nvidia.com/gpu.present=true         # only target GPU nodes
    kill: 1                                                  # pods to delete
    krkn_pod_recovery_time: 120                              # seconds to wait for recovery

See Pod Scenarios for all available options.

Then add it to the chaos_scenarios section of config/config.yaml:

kraken:
  kubeconfig_path: ~/.kube/config
  chaos_scenarios:
    - pod_disruption_scenarios:
        - scenarios/kube/gpu_device_plugin.yaml

Run

python run_kraken.py --config config/config.yaml

Run

$ podman run \
  --name=gpu-device-plugin-disruption \
  --net=host \
  --pull=always \
  --env-host=true \
  -e NAMESPACE="nvidia-gpu-operator" \
  -e POD_LABEL="app=nvidia-device-plugin-daemonset" \
  -e NODE_LABEL_SELECTOR="nvidia.com/gpu.present=true" \
  -e DISRUPTION_COUNT="1" \
  -e EXPECTED_RECOVERY_TIME="120" \
  -v <path-to-kube-config>:/home/krkn/.kube/config:Z \
  -d containers.krkn-chaos.dev/krkn-chaos/krkn-hub:pod-scenarios
$ podman logs -f gpu-device-plugin-disruption

See Pod Scenarios for all supported parameters.

krknctl run pod-scenarios \
  --namespace nvidia-gpu-operator \
  --pod-label app=nvidia-device-plugin-daemonset \
  --node-label-selector nvidia.com/gpu.present=true \
  --disruption-count 1 \
  --expected-recovery-time 120

See Pod Scenarios for all supported parameters, or run:

krknctl run pod-scenarios --help