Csi-node-driver-registrar#

Csi-node-driver-registrar - компонент управляет регистрацией драйверов для устройств хранения данных на узлах DropApp Plus. Обеспечивает регистрацию драйвера на каждом узле, который будет использоваться для работы с хранилищами данных. Компонент предоставляет API для регистрации драйверов и запускается в DropApp Plus в виде DaemonSet.

Последовательность выполнения#

Примечание

Все приведенные компоненты csi-node-driver-registrar используются вместе для управления томами и хранилищами данных в DropApp Plus с помощью CSI стандарта.

Csi-node-driver-registrar представляет собой дополнительный контейнер, который извлекает информацию о драйвере (используя NodeGetInfo) из конечной точки CSI и регистрирует ее в kubelet на этом узле с помощью механизма регистрации подключаемого модуля kubelet.

Kubelet напрямую выполняет вызовы CSI NodeGetInfo, NodeStageVolume и NodePublishVolume для драйверов CSI. Он использует механизм регистрации подключаемого модуля kubelet для обнаружения сокета домена unix для взаимодействия с драйвером CSI. Следовательно, все драйверы CSI должны использовать этот sidecar-контейнер для регистрации в kubelet.

Таблица. Параметры командной строки.

Синтаксис флага

Значение

--csi-address

Путь к сокету драйвера внутри модуля, который контейнер Csi-node-driver-registrar будет использовать для выполнения операций CSI (например, /csi/csi.sock)

--kubelet-registration-path

Путь к сокету драйвера CSI на хост-узле, который kubelet будет использовать для выполнения операций CSI (например, /var/lib/kubelet/plugins/<drivername.example.com>/csi.sock)

Csi-node-driver-registrar не взаимодействует с API DropApp Plus, поэтому правила RBAC не нужны.

Csi-node-driver-registrar должен иметь возможность монтировать тома hostPath и иметь права доступа к файлам.

  1. Получите доступ к сокету драйвера CSI (путь: /var/lib/kubelet/plugins/<drivername.example.com>/).

  2. Получите доступ к регистрационному сокету (путь: /var/lib/kubelet/plugins_registry/). Убедитесь, что плагин для регистрации доступен на хосте, на котором запущен DropApp Plus. Обычно это можно проверить, выполнив команду oc get pods -n kube-system. Если виден pod с именем etcd-<имя_хоста>, то плагин доступен.

  3. Проверьте работоспособность csi-node-driver-registrar:

      containers:
        - name: csi-driver-registrar
          image: dappregistry/sig-storage/csi-node-driver-registrar:v2.5.1
          args:
            - "--v=5"
            - "--csi-address=/csi/csi.sock"
            - "--kubelet-registration-path=/var/lib/kubelet/plugins/<drivername.example.com>/csi.sock"
          livenessProbe:
            exec:
              command:
              - /csi-node-driver-registrar
              - --kubelet-registration-path=/var/lib/kubelet/plugins/<drivername.example.com>/csi.sock
              - --mode=kubelet-registration-probe
            initialDelaySeconds: 30
            timeoutSeconds: 15
    

    Выше приведена конфигурация контейнера для DropApp Plus, который используется для регистрации DropApp Plus CSI Driver. В контейнере используется образ Docker, он содержит программу csi-node-driver-registrar, которая регистрирует DropApp Plus CSI драйвер в кластере.

    Контейнер используется для запуска программы для регистрации драйвера DropApp Plus. Драйвер – это компонент, который позволяет узлам DropApp Plus подключаться к блочным устройствам, таким как диски или сетевые хранилища. В данном случае, контейнер используется для регистрации драйвера DropApp Plus в системе.

    Флаг --mode=kubelet-registration-probe модифицирует csi-node-driver-registrar в зонд, проверяющий, прошла ли регистрация подключаемого модуля kubelet успешно. Значение --kubelet-registration-path должно быть таким же, как задано в аргументах контейнера, --csi-address в этом режиме не требуется.

    Если --http-endpoint установлено, то csi-node-driver-registrar предоставляет конечную точку проверки работоспособности по указанному адресу и пути /healthz, указывая, существует ли сокет регистрации.

  4. Примените спецификацию:

          containers:
            - name: csi-driver-registrar
              image: /sig-storage/csi-node-driver-registrar:v2.5.1
              args:
                - "--csi-address=/csi/csi.sock"
                - "--kubelet-registration-path=/var/lib/kubelet/plugins/<drivername.example.com>/csi.sock"
                # Адрес не являтся существующим и приведен в качестве примера.
                - "--health-port=9809"
              volumeMounts:
                - name: plugin-dir
                  mountPath: /csi
                - name: registration-dir
                  mountPath: /registration
              ports:
                - containerPort: 9809
                  name: healthz
              livenessProbe:
                httpGet:
                  path: /healthz
                  port: healthz
                initialDelaySeconds: 5
                timeoutSeconds: 5
          volumes:
            - name: registration-dir
              hostPath:
                path: /var/lib/kubelet/plugins_registry/
                type: Directory
            - name: plugin-dir
              hostPath:
                path: /var/lib/kubelet/plugins/<drivername.example.com>/
                # Адрес не являтся существующим и приведен в качестве примера.
                type: DirectoryOrCreate
    

    Выше представлен контейнер для DropApp Plus, используемый для регистрации DropApp Plus Controller Manager в кластере DropApp Plus. В конфигурации контейнера используется образ Docker с программой csi-node-driver-registrar. Контейнер также содержит два тома - /csi и /registration, которые используются для хранения данных регистрации DropApp Plus Controller. Порт 9809 используется для проверки работоспособности контейнера. Liveness Probe проверяет работоспособность контейнера каждые 5 секунд.

Результат#

Csi-node-driver-registrar настроен и готов к использованию.