CSIDriver содержит сведения о драйвере томов Container Storage Interface (CSI), развернутом в кластере. Контроллер Kubernetes для подключения и отключения томов использует этот объект, чтобы определить, требуется ли подключение. Kubelet использует этот объект, чтобы определить, нужно ли передавать сведения о поде при монтировании. Объекты CSIDriver не относятся к пространствам имен.
CSINode содержит сведения обо всех драйверах CSI, установленных на узле. Драйверам CSI не нужно создавать объект CSINode напрямую. Если они используют контейнер-компаньон node-driver-registrar, kubelet автоматически заполнит объект CSINode для драйвера CSI в рамках регистрации плагина kubelet. Имя CSINode совпадает с именем узла. Если объект отсутствует, это означает, что на узле нет доступных драйверов CSI либо версия Kubelet слишком старая и не создает этот объект. У CSINode есть OwnerReference, указывающий на соответствующий объект узла.
CSIStorageCapacity хранит результат одного вызова CSI GetCapacity. Для заданного StorageClass этот объект описывает доступную емкость в определенном сегменте топологии. Эти сведения можно использовать при выборе места для создания новых PersistentVolumes.
Например, с его помощью можно выразить следующее: - для StorageClass "standard" доступно "1234 GiB" в "topology.kubernetes.io/zone=us-east1" - для StorageClass "localssd" доступно "10 GiB" в "kubernetes.io/hostname=knode-abc123"
Во всех трех следующих случаях подразумевается, что для определенного сочетания параметров емкость недоступна: - нет объекта с подходящими топологией и именем класса хранилища - такой объект существует, но емкость не задана - такой объект существует, но емкость равна нулю
Создатель этих объектов может выбрать наиболее подходящий подход.
Планировщик kube-scheduler использует эти объекты, если драйвер CSI включает планирование с учетом емкости с помощью CSIDriverSpec.StorageCapacity. Планировщик сравнивает MaximumVolumeSize с запрошенным размером ожидающих томов, чтобы исключить неподходящие узлы. Если MaximumVolumeSize не задан, вместо него используется менее точное значение Capacity. Если оно также не задано, планировщик считает емкость недостаточной и пытается выбрать другой узел.
StorageClass описывает параметры класса хранилища, для которого PersistentVolumes можно динамически подготовить.
StorageClasses не относятся к пространствам имен; имя класса хранилища в etcd хранится в ObjectMeta.Name.
VolumeAttachment фиксирует намерение подключить указанный том к указанному узлу или отключить его от этого узла.
Объекты VolumeAttachment не относятся к пространствам имен.
VolumeAttributesClass представляет спецификацию изменяемых атрибутов тома, определенных драйвером CSI. Класс можно указать при динамической подготовке PersistentVolumeClaims, а после подготовки изменить в спецификации PersistentVolumeClaim.