Сsi-external-provisioner#
Сsi-external-provisioner - компонент управляет динамическим выделением томов CSI. Обеспечивает создание, монтирование и удаление томов CSI по запросу. Компонент предоставляет API для создания, удаления и монтирования томов и запускается в DropApp Plus в виде pod.
Последовательность выполнения#
Рекомендуемые флаги приведены в таблице.
Таблица. Рекомендуемые флаги Сsi-external-provisioner
Синтаксис флага |
Значение |
|---|---|
|
Путь к сокету драйвера CSI внутри pod, который контейнер |
|
Включает выбор главного процесса. Флаг обязателен, если для одного драйвера CSI запущено несколько реплик одного и того же внешнего поставщика. Активным может быть только один из них. Новый главный процесс будет выбран когда текущий процесс завершит работу или перестанет отвечать на запросы в течение примерно |
|
Пространство имен, в котором будет создан объект выбора главного процесса. Рекомендуется, чтобы этот параметр заполнялся в прострастве, в котором работает |
|
Продолжительность в секундах, в течение которой допускается простой процесса. По умолчанию – |
|
Продолжительность в секундах, в течение которой главный процесс повторяет попытку обновления лидерства, прежде чем завершить работу. По умолчанию – |
|
Продолжительность в секундах, в течение которой клиенты |
|
Тайм-аут всех обращений к драйверу CSI. Он должен быть установлен на значение, которое подходит для большинства вызовов |
|
Начальный интервал повторных попыток при неудачной инициализации или удалении. Он удваивается с каждым сбоем, до |
|
Максимальный интервал повторных попыток при неудачной инициализации или удалении. Значение по умолчанию — |
|
Количество одновременно запущенных |
|
Количество запросов в секунду, отправленных клиентом DropApp на API server DropApp Plus. По умолчанию – |
|
Количество запросов к серверу API DropApp Plus, превышающее число запросов в секунду, которые можно отправить в любой момент времени. По умолчанию |
|
Количество одновременно запущенных потоков, обрабатывающих удаление финализатора клонирования. По умолчанию – |
|
Cетевой адрес TCP, который будет прослушивать HTTP-сервер (порт 8080 на локальном хосте). По умолчанию используется пустая строка, что означает, что сервер отключен |
|
HTTP-путь, по которому будут отображаться метрики Prometheus. Значение по умолчанию |
|
Ввод дополнительных метаданных PVC и PV в качестве параметров при вызове |
|
Этот параметр позволяет пометить PV как доступный только для чтения при вызове тома публикации контроллера, если режим доступа PVC. По умолчанию значение |
|
Включение профилирования |
Сsi-external-provisioner может работать в одном pod с другими внешними контроллерами CSI, такими как Сsi-external-attacher, Сsi-external-snapshotter и Сsi-external-resizer.
Сsi-external-provisioner не масштабируется с большим количеством реплик. Только один экземпляр Сsi-external-provisioner избирается в качестве главного процесса и работает. Новый главный процесс переизбирается через 15 секунд после завершения работы старого процесса.
Внешний поставщик можно использовать для создания объектов CSIStorageCapacity, которые содержат информацию о емкости хранилища, доступной через драйвер. Затем планировщик DropApp Plus использует эту информацию при выборе узлов для модулей с несвязанными томами, ожидающими первого потребителя.
Все объекты CSIStorageCapacity, созданные экземпляром Сsi-external-provisioner, имеют определенные метки:
csi.storage.k8s.io/drivernameимя драйвера CSI;csi.storage.k8s.io/managed-byСsi-external-provisioner для централизованного предоставления, Сsi-external-provisioner для распределенного предоставления.
Они создаются в пространстве имен, указанном в переменной среды.
Каждый экземпляр Сsi-external-provisioner управляет именно теми объектами с метками, которые соответствуют экземпляру.
При необходимости все объекты CSIStorageCapacity, созданные экземпляром Сsi-external-provisioner, могут иметь владельца. Это гарантирует автоматическое удаление объектов при удалении драйвера CSI. Владелец определяется переменными среды POD_NAME/NAMESPACE и параметром --capacity-ownerref-level.
Если владение отключено, администратор хранилища отвечает за удаление потерянных объектов CSIStorageCapacity, и для очистки потерянных объектов драйвера можно использовать следующую команду:
oc delete csistoragecapacities -l csi.storage.k8s.io/drivername=my-csi.example.com
Следуйте последовательности действий, чтобы настроить поддержку емкости.
Установите переменные среды
POD_NAMEиNAMESPACE:env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.nameПримените манифест:
kind: Deployment apiVersion: apps/v1 metadata: name: csi-provisioner spec: replicas: 3 selector: matchLabels: app: csi-provisioner template: metadata: labels: app: csi-provisioner spec: serviceAccount: csi-provisioner containers: - name: csi-provisioner image: dappregistry/1.2/csi-provisioner:v3.3.0 args: - "--csi-address=$(ADDRESS)" - "--leader-election" - "--http-endpoint=:8080" env: - name: ADDRESS value: /var/lib/csi/sockets/pluginproxy/mock.socket imagePullPolicy: "IfNotPresent" volumeMounts: - name: socket-dir mountPath: /var/lib/csi/sockets/pluginproxy/ ports: - containerPort: 8080 name: http-endpoint protocol: TCP livenessProbe: failureThreshold: 1 httpGet: path: /healthz/leader-election port: http-endpoint initialDelaySeconds: 10 timeoutSeconds: 10 periodSeconds: 20 - name: mock-driver image: quay.io/k8scsi/mock-driver:canary env: - name: CSI_ENDPOINT value: /var/lib/csi/sockets/pluginproxy/mock.socket volumeMounts: - name: socket-dir mountPath: /var/lib/csi/sockets/pluginproxy/ volumes: - name: socket-dir emptyDir:Добавьте в командную строку флаг
--enable-capacity.Добавьте
StorageCapacity: trueв информационный объект CSIDriver.Если Сsi-external-provisioner не развернут
StatefulSet, настройте при помощи флага--capacity-ownerref-levelкакими объектами будет происходить управлениеCSIStorageCapacity.Настройте частоту опроса драйвера для обнаружения измененной емкости с помощью флага
--capacity-poll-interval.Настройте количество рабочих потоков, используемых параллельно с помощью флага
--capacity-threads.Включите создание информации также для классов хранения, которые используют немедленную привязку тома с файлом
--capacity-for-immediate-binding.
Результат#
Сsi-external-provisioner настроен и готов к использованию.