k8s.io/test-infra@v0.0.0-20240520184403-27c6b4c223d8/config/prow/cluster/build/create-loop-devs_daemonset.yaml (about)

     1  # A daemonset to create /dev/loopX device nodes before they are
     2  # needed.
     3  #
     4  # Normally, new nodes are created dynamically by the kernel. But nodes
     5  # in a KIND cluster are started with a copy of /dev from the host and
     6  # loop devices created later on do not show up in that static /dev
     7  # (https://github.com/kubernetes-sigs/kind/issues/1248). Creating
     8  # "enough" (1000 in this daemonset) in advance avoids running out of
     9  # loop devices.
    10  apiVersion: apps/v1
    11  kind: DaemonSet
    12  metadata:
    13    name: create-loop-devs
    14    namespace: kube-system
    15    labels:
    16      app: create-loop-devs
    17  spec:
    18    selector:
    19      matchLabels:
    20        name: create-loop-devs
    21    updateStrategy:
    22      type: RollingUpdate
    23      rollingUpdate:
    24        maxUnavailable: "10%"
    25    template:
    26      metadata:
    27        labels:
    28          name: create-loop-devs
    29      spec:
    30        tolerations:
    31        - operator: Exists
    32          effect: NoSchedule
    33        containers:
    34        - name: loopdev
    35          command:
    36          - sh
    37          - -c
    38          - |
    39            while true; do
    40              for i in $(seq 0 1000); do
    41                  if ! [ -e /dev/loop$i ]; then
    42                    mknod /dev/loop$i b 7 $i
    43                  fi
    44              done
    45              sleep 100000000
    46            done
    47          image: alpine:20231219
    48          imagePullPolicy: IfNotPresent
    49          resources: {}
    50          securityContext:
    51            privileged: true
    52          volumeMounts:
    53          - name: dev
    54            mountPath: /dev
    55        volumes:
    56        - name: dev
    57          hostPath:
    58            path: /dev