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.

Ознайомтесь також