CSIDriver збирає інформацію про драйвер тому Container Storage Interface (CSI), розгорнутий у кластері. Контролер приєднання та відʼєднання Kubernetes використовує цей обʼєкт для визначення, чи потрібне приєднання. Kubelet використовує цей обʼєкт для визначення, чи потрібно передавати інформацію про поди під час монтування. Обʼєкти CSIDriver не мають простору імен.
CSINode містить інформацію про всі CSI драйвери, встановлені на вузлі. CSI драйвери не потребують створення обʼєкта CSINode безпосередньо. Поки вони використовують контейнер sidecar 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 після створення.