apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: rdma-sriov-dp-ds
  namespace: kube-system
  labels:
    k8s-app: rdma-sriov-dp-ds
spec:
  selector:
    matchLabels:
      k8s-app: rdma-sriov-dp-ds
  template:
    metadata:
      # Mark this pod as a critical add-on; when enabled, the critical add-on scheduler
      # reserves resources for critical add-on pods so that they can be rescheduled after
      # a failure.  This annotation works in tandem with the toleration below.
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ""
      labels:
        k8s-app: rdma-sriov-dp-ds
    spec:
      hostNetwork: true
      tolerations:
        # Allow this pod to be rescheduled while the node is in "critical add-ons only" mode.
        # This, along with the annotation above marks this pod as a critical add-on.
        - key: CriticalAddonsOnly
          operator: Exists
      initContainers:
        - command:
            - sh
            - -c
            - "echo 1 > /sys/class/net/eth2/device/sriov_numvfs && /container_tools/docker_rdma_sriov rdmanetns set --mode=exclusive"
          image: rdma/container_tools_installer
          imagePullPolicy: IfNotPresent
          name: setvfsnum
          resources: {}
          securityContext:
            privileged: true
            procMount: Default
      containers:
        - image: rdma/k8s-rdma-sriov-dev-plugin
          name: k8s-rdma-sriov-dp-ds
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: true
          volumeMounts:
            - name: device-plugin
              mountPath: /var/lib/kubelet/device-plugins
            - name: config
              mountPath: /k8s-rdma-sriov-dev-plugin
      volumes:
        - name: device-plugin
          hostPath:
            path: /var/lib/kubelet/device-plugins
        - name: config
          configMap:
            name: rdma-devices
            items:
              - key: config.json
                path: config.json