Клонування CSI-томів
У цьому документі описано концепцію клонування наявних томів CSI в Kubernetes. Рекомендується мати уявлення про томи.
Вступ
Функція клонування томів CSI додає підтримку вказання наявних PVC у полі dataSource
для позначення бажання користувача клонувати Том.
Клон визначається як дублікат наявного тому Kubernetes, який можна використовувати як будь-який стандартний том. Єдина відмінність полягає в тому, що після підготовки, а не створення "нового" порожнього тому, пристрій, що відповідає за підтримку томів, створює точний дублікат вказаного тому.
Реалізація клонування, з погляду API Kubernetes, додає можливість вказати наявний PVC як джерело даних під час створення нового PVC. Джерело PVC має бути повʼязане та доступне (не у використанні).
Користувачі повинні знати наступне при використанні цієї функції:
- Підтримка клонування (
VolumePVCDataSource
) доступна лише для драйверів CSI. - Підтримка клонування доступна лише для динамічних постачальників.
- Драйвери CSI можуть чи не можуть реалізувати функціонал клонування томів.
- Ви можете клонувати тільки PVC, коли вони існують у тому ж просторі імен, що і PVC призначення (джерело та призначення повинні бути в одному просторі імен).
- Клонування підтримується з різним Storage Class.
- Призначений том може мати той самий або інший клас сховища, ніж джерело.
- Можна використовувати типовий клас сховища, і вказування storageClassName можна пропустити в специфікації.
- Клонування може бути виконане лише між двома томами, які використовують одне і те саме налаштування VolumeMode (якщо ви запитуєте том в блоковому режимі, то джерело ТАКОЖ повинно бути в блоковому режимі).
Впровадження
Клони забезпечуються так само як і інші PVC, за винятком додавання dataSource, яке посилається на поточний PVC у тому ж самому просторі імен.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: clone-of-pvc-1
namespace: myns
spec:
accessModes:
- ReadWriteOnce
storageClassName: cloning
resources:
requests:
storage: 5Gi
dataSource:
kind: PersistentVolumeClaim
name: pvc-1
Примітка:
Ви повинні вказати значення місткості дляspec.resources.requests.storage
, і значення, яке ви вказуєте, повинно бути таким самим або більшим, ніж місткість вихідного тому.Результатом є новий PVC з імʼям clone-of-pvc-1
, який має точно такий самий зміст, як і вказане джерело pvc-1
.
Використання
При доступності нового PVC клонований PVC використовується так само як і інші PVC. Також на цьому етапі очікується, що новий створений PVC є незалежним обʼєктом. Його можна використовувати, клонувати, створювати знімки чи видаляти незалежно та без врахування вихідного джерела PVC. Це також означає, що джерело ніяк не повʼязане з новим створеним клоном, його також можна модифікувати чи видалити, не впливаючи на новий клон.