Kubernetes v1.33: Томи Image (Image Volumes) переходять в стан бета!
Томи Image було представлено як альфа фіункціонал в Kubernetes v1.31, як частину KEP-4639. В Kubernetes v1.33, ця функція переходить в стан бета.
Зверніть увагу, що стандартно цю можливість все ще вимкнено, оскільки не всі контейнерні середовища мають повну підтримку цієї можливості. CRI-O підтримує початкову можливість, починаючи з версії v1.31, а у версії v1.33 буде додано підтримку Томів Image як бета-версію. containerd додав підтримку можливості як альфа-версію, яка буде частиною випуску v2.1.0, і працює над бета-версією в рамках PR #11578.
Що нового
Основною зміною у бета-версії Томів Image є підтримка монтувань subPath
і subPathExpr
для контейнерів за допомогою spec.containers[*].volumeMounts.[subPath,subPathExpr]
. Це дозволяє кінцевим користувачам змонтувати певну теку тому image, яку досі змонтовано у режимі лише для читання (noexec
). Це означає, що відсутні теки не можуть бути стандартно змонтовані. Що стосується інших значень subPath
та subPathExpr
, то Kubernetes переконається, що у вказаному шляху немає компонентів абсолютного шляху або відносного шляху, що входять до складу підшляху. З міркувань безпеки, середовища виконання контейнерів також зобовʼязані перевіряти ці вимоги двічі. Якщо вказана тека не існує у томі, то середовище виконання не зможе створити контейнер і надасть користувачеві відгук, використовуючи події kubelet.
Крім того, для томів образів додано три нові метрики для kubelet-зображень:
kubelet_image_volume_requested_total
: Показує кількість запитаних томів образів.kubelet_image_volume_mounted_succeed_total
: Підраховує кількість успішних змонтованих томів образів.kubelet_image_volume_mounted_errors_total
: Підраховує кількість невдалих монтувань томів образів.
Для використання наявної теки для конкретного тому image, використовуйте її як значення subPath
(чи subPathExpr
) параметра volumeMounts
:
apiVersion: v1
kind: Pod
metadata:
name: image-volume
spec:
containers:
- name: shell
command: ["sleep", "infinity"]
image: debian
volumeMounts:
- name: volume
mountPath: /volume
subPath: dir
volumes:
- name: volume
image:
reference: quay.io/crio/artifact:v2
pullPolicy: IfNotPresent
Потім створіть pod у вашому кластері:
kubectl apply -f image-volumes-subpath.yaml
Тепер ви можете приєднатись до контейнера:
kubectl attach -it image-volume bash
І перевірте вміст файлу з теки dir
у цьому томі:
cat /volume/file
На виході ми отримаємо приблизно таке:
1
Дякуємо, що дочитали цю статтю до кінця! SIG Node з гордістю і радістю представляє цей перехід функції в стан бета в рамках Kubernetes v1.33.
Як автор цієї статті, я хотів би підкреслити свою особливу подяку всім залученим особам, які брали участь у розробці!
Якщо ви хочете залишити відгук або пропозиції, не соромтеся звертатися до SIG Node, використовуючи канал Kubernetes Slack (#sig-node) або список розсилки SIG Node.