Kubernetes v1.33: Бета-версія Image Volumes з підтримкою subPath

У релізі Kubernetes v1.33 Image Volumes, які вперше були представлені як Alpha функція в v1.31 відповідно до KEP-4639, тепер перейшли в стадію Beta. Цей етап забезпечує покращену стабільність, розширене управління subPath та підтримку більшої кількості середовищ виконання, що відкриває нові можливості для використання в продуктивних системах з контейнерним зберіганням.
Статус функції та сумісність із середовищами виконання
Хоча функція має статус Beta, Image Volumes залишаються вимкненими за замовчуванням через ImageVolumes
feature gate. Адміністратори повинні явно активувати цю функцію, щоб експериментувати або впроваджувати її в продуктивних кластерах. Станом на сьогодні, сумісність із середовищами виконання виглядає наступним чином:
- CRI-O: Підтримка Alpha з v1.31; повна підтримка Beta з v1.33.
- containerd: Alpha інтеграція в PR #10579, вийшла в v2.1.0. Підтримка Beta розвивається в рамках PR #11578.
- Docker Engine (dockershim): Відмова в Kubernetes; вітаються внески з боку спільноти.
- Інші CRI-сумісні середовища виконання: Адаптація та інтеграція залежать від пріоритетів окремих SIG та постачальників.
Що нового в Beta
Основною новинкою для Beta є підтримка subPath
та subPathExpr
в Image Volumes. Нові валідації та семантика монтування включають:
noexec
тільки для читання: Image Volumes зберігають незмінність та запобігають виконанню коду з шарів зображення, що відповідає посиленій безпеці контейнерів.- Сувора санітарія шляхів: Kubernetes та середовища виконання тепер відхиляють абсолютні шляхи або послідовності на кшталт
../
, щоб уникнути атак через обходи директорій. - Зворотний зв’язок про помилки середовища виконання: Якщо цільовий підкаталог не існує, створення контейнера завершується невдачею з чіткими подіями
kubelet
та статусними повідомленнями поду. - Послідовні метрики: Три нові лічильники
kubelet
дозволяють моніторити впровадження та надійність:
kubelet_image_volume_requested_total
kubelet_image_volume_mounted_succeed_total
kubelet_image_volume_mounted_errors_total
Технічні деталі: реалізація subPath
Image Volumes використовують API монтування шарів контейнерного середовища для відкриття певного піддерева файлової системи без повного витягування зображення. Це економить дискові операції вводу/виводу та зменшує затримки при запуску. Коли вказується subPath
, Kubernetes викликає операцію Mount
середовища виконання з прапором --source-layer
, вирізаючи знімок шару через накладні монтування. Прапори монтування noexec,ro
вводяться під час монтування kubelet, забезпечуючи незмінність від реєстру зображень до простору імен поду.
Матриця підтримки середовищ виконання
Підтримка Image Volumes відстежується SIG Node та внесками спільноти:
- CRI-O v1.31+: Alpha; v1.33: Beta з розширеннями
subPathExpr
. - containerd v2.1.0: Alpha функції доступні вже; v2.2.x включатиме стабільні прапори
--subpath
та нову архітектуру плагінаImageVolumeManager
. - Сценарії контейнерів Windows: Експериментальний прототип обговорюється, відстежуючи KEP-5099.
Приклад використання
Нижче наведено приклад монтування конкретного каталогу з назвою dir
з контейнерного зображення:
apiVersion: v1
kind: Pod
metadata:
name: image-volume-subpath
spec:
containers:
- name: shell
image: debian:bookworm
command: ["sleep","infinity"]
volumeMounts:
- name: artifact-volume
mountPath: /mnt/data
subPath: dir
volumes:
- name: artifact-volume
image:
reference: quay.io/crio/artifact:v2
pullPolicy: IfNotPresent
Застосуйте та перевірте:
kubectl apply -f image-volumes-subpath.yaml
kubectl attach -it image-volume-subpath -- /bin/bash
cat /mnt/data/file
Перспективи експертів та найкращі практики
“Image Volumes у стадії Beta є суттєвим кроком до незмінного, контейнерного зберігання,” зазначає Мішель Оу, провідний інженер у провідному постачальнику хмарних послуг. “Рекомендуємо активувати функціональні можливості в кластері стадії, впровадити нові метрики та перевірити відповідність середовища виконання через журнали kubelet.”
Основні рекомендації:
- Активуйте
--feature-gates=ImageVolumes=true
лише після оцінки готовності середовища виконання. - Використовуйте
subPathExpr
для динамічного монтування, керованого змінними середовища, наприкладsubPathExpr: "${POD_NAME}-logs"
. - Моніторте
kubelet_image_volume_mounted_errors_total
, щоб рано виявити відсутні шляхи у ваших CI/CD процесах.
Плани на майбутнє та додаткова література
Оглядаючись у майбутнє до Kubernetes v1.34 та далі, SIG Node оцінює:
- Підтримку записуваних накладок для розширених робочих процесів створення та налагодження.
- Прямий вибір OCI-шарів через анотації, минаючи повне завантаження зображень.
- Інтеграцію з CSI-драйверами для реплікації зображень між регіонами.
Додаткова література
- Використання Image Volume з Pod
image
огляд обсягу- KEP-4639 (відстеження дизайну та реалізації)