Встановлення параметрів bind mount для монтування томів

Стан функціоналу: Alpha починаючи з Kubernetes v1.37; стандартно вимкнено
Докладніше про цей функціонал

Щоб скористатися цією функцією, вам (або адміністратору кластера) потрібно увімкнути функціональну можливість VolumeBindMountOptions для всіх відповідних компонентів у вашому кластері.

Перегляньте Увімкнення або вимкнення функціональних можливостей для отримання додаткової інформації.

Ця сторінка показує, як застосувати повʼязані з безпекою параметри bind mount (noexec, nodev, nosuid) до монтування томів у Podʼі.

Перш ніж ви розпочнете

Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:

Версія вашого Kubernetes сервера має бути v1.37.

Для перевірки версії введіть kubectl version.

Вам потрібно, щоб функціональна можливість VolumeBindMountOptions була увімкнена на API-сервері та на kubelet. Середовище виконання контейнерів також повинно підтримувати поле mount_options у повідомленні CRI Mount.

Створення Podʼа з параметрами bind 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: {}
  1. Створіть Pod у вашому кластері:

    kubectl apply -f https://k8s.io/examples/pods/bind-mount-options.yaml
    
  2. Перевірте, що Pod працює:

    kubectl get pod bind-mount-options-demo
    
  3. Перевірте параметри монтування тому:

    kubectl exec bind-mount-options-demo -- mount | grep /tmp
    

    Вивід повинен містити noexec та nosuid у параметрах монтування.

  4. Перевірте, що виконання двійкового файлу на цьому монтуванні зазнає невдачі:

    kubectl exec bind-mount-options-demo -- sh -c 'cp /bin/ls /tmp/ls && /tmp/ls'
    

    Вивід подібний до:

    sh: /tmp/ls: Permission denied
    
  5. Видаліть Pod, який ви створили для цієї вправи:

    kubectl delete pod bind-mount-options-demo
    

Що далі

Востаннє змінено August 30, 2026 at 10:31 AM PST: [uk] Ukrainian translation (all-in-one) (ac41b20ac1)