Перейти к основному содержимому
Подключить файловое хранилище к Managed Kubernetes по протоколу NFS

Подключить файловое хранилище к Managed Kubernetes по протоколу NFS

  1. Подготовьте инфраструктуру для подключения файлового хранилища к Managed Kubernetes.
  2. Закажите подключение файлового хранилища.
  3. Проверьте сетевую доступность файлового хранилища.
  4. Создайте манифест для PersistentVolume.
  5. Создайте манифест для PersistentVolumeClaim.
  6. Добавьте файловое хранилище в контейнер Deployment.
  7. Проверьте подключение файлового хранилища.

Заказать подключение файлового хранилища

  1. Создайте тикет на подключение файлового хранилища и укажите:

    • размер файлового хранилища;
    • протокол: NFS;
    • инфраструктуру: кластер Kubernetes;
    • IP-адрес: адрес приватной сети облачной платформы, которую вы добавили к кластеру Managed Kubernetes.
  2. Дождитесь ответа в тикете. В ответе будет предоставлена команда с параметрами подключения:

sudo mkdir -p /mnt/nfs && mount.nfs4 -rw x.x.x.x:/<UUID> /mnt/nfs

Параметры подключения:

  • x.x.x.x — IP-адрес;
  • /share/<UUID> — путь к файловому хранилищу.

Проверить сетевую доступность файлового хранилища

  1. На ноде кластера Managed Kubernetes выполните команду:

    ping <nfs-server ip-address>

    Укажите <nfs-server ip-address> — IP-адрес из параметров подключения.

  2. Дождитесь отображения отправленных и принятых пакетов. Если указан правильный IP-адрес, но пакеты не отображаются, создайте тикет.

Создать манифест для PersistentVolume

Подробнее о персистентных дисках в статье Персистентные диски.

  1. Создайте файл sfs_persistent_volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv_name
    spec:
    storageClassName: class_name
    capacity:
    storage: storage_size
    accessModes:
    - ReadWriteMany
    nfs:
    path: path
    server: ip_adress

    Укажите:

  2. Примените манифест:

    kubectl apply -f sfs_persistent_volume.yaml
  3. Проверьте, что PersistentVolume создан:

    kubectl get pv

Создать манифест для PersistentVolumeClaim

  1. Создайте файл sfs_persistent_volume_claim.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: pvc_name
    spec:
    storageClassName: class_name
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: storage

    Укажите storage — объем PersistentVolume.

  2. Примените манифест:

    kubectl apply -f sfs_persistent_volume_claim.yaml
  3. Проверьте, что PersistentVolumeClaim создан:

    kubectl get pvc

Добавить файловое хранилище в контейнер Deployment

  1. Создайте файл deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: sfs-test-deployment
    labels:
    project: sfs-test-deployment
    spec:
    replicas: 2
    selector:
    matchLabels:
    project: sfs-test
    template:
    metadata:
    labels:
    project: sfs-test
    spec:
    volumes:
    - name: volume_name
    persistentVolumeClaim:
    claimName: pvc_name
    containers:
    - name: container-nginx
    image: nginx:stable-alpine
    ports:
    - containerPort: 80
    name: "http-server"
    volumeMounts:
    - name: volume_name
    mountPath: mouth_path

    Укажите:

    • pvc_name — название PVC из манифеста PersistentVolumeClaim;
    • mouth_path — путь внутри контейнера, куда будет смонтировано файловое хранилище.
  2. Примените манифест:

    kubectl apply -f deployment.yaml

Проверить подключение файлового хранилища

  1. Выведите имена контейнеров из Deployment sfs-test-deployment:

    kubectl get pods -l=project=sfs-test-deployment -A
  2. Подключитесь к контейнеру:

    kubectl -it container_name sh

    Укажите container_name — имя контейнера.

  3. Проверьте, что файловое хранилище смонтировалось:

    mount -l | grep nfs
  4. Проверьте, что объем тома соответствует параметру storage_size из файла sfs_persistent_volume.yaml:

    df -h
  5. Запишите и выведите текст:

    echo "Hello World!" > mount_path/hello.txt
    cat mount_path/hello.txt

    Укажите mouth_path — путь внутри контейнера, куда было смонтировано файловое хранилище.