Щоб скористатися цією функцією, вам (або адміністратору кластера) потрібно увімкнути функціональну можливість VolumeBindMountOptions для всіх відповідних компонентів у вашому кластері.
Перегляньте Увімкнення або вимкнення функціональних можливостей для отримання додаткової інформації.
Ця сторінка показує, як застосувати повʼязані з безпекою параметри bind mount (noexec, nodev, nosuid) до монтування томів у Podʼі.
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Версія вашого Kubernetes сервера має бути v1.37.Для перевірки версії введіть kubectl version.
Вам потрібно, щоб функціональна можливість VolumeBindMountOptions була увімкнена на API-сервері та на kubelet. Середовище виконання контейнерів також повинно підтримувати поле mount_options у повідомленні CRI Mount.
Поле .spec.containers[*].volumeMounts[*].bindMountOptions приймає список прапорців bind mount. Допустимі значення: noexec, nodev та nosuid.
Наприклад, щоб змонтувати том emptyDir у /tmp з noexec та nosuid так, щоб двійкові файли не можна було виконувати, а біти set-user-ID ігнорувалися:
apiVersion: v1
kind: Pod
metadata:
name: bind-mount-options-demo
spec:
containers:
- image: registry.k8s.io/busybox
name: test-container
command: ["sleep", "3600"]
volumeMounts:
- mountPath: /tmp
name: tmp-volume
bindMountOptions:
- noexec
- nosuid
volumes:
- name: tmp-volume
emptyDir: {}
Створіть Pod у вашому кластері:
kubectl apply -f https://k8s.io/examples/pods/bind-mount-options.yaml
Перевірте, що Pod працює:
kubectl get pod bind-mount-options-demo
Перевірте параметри монтування тому:
kubectl exec bind-mount-options-demo -- mount | grep /tmp
Вивід повинен містити noexec та nosuid у параметрах монтування.
Перевірте, що виконання двійкового файлу на цьому монтуванні зазнає невдачі:
kubectl exec bind-mount-options-demo -- sh -c 'cp /bin/ls /tmp/ls && /tmp/ls'
Вивід подібний до:
sh: /tmp/ls: Permission denied
Видаліть Pod, який ви створили для цієї вправи:
kubectl delete pod bind-mount-options-demo