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

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

Если с помощью файлового хранилища нужно увеличить дисковое пространство, мы рекомендуем создавать хранилище в одном пуле с кластером Managed Kubernetes. Если файловое хранилище и кластер Managed Kubernetes находятся в одном пуле, то для подключения хранилища нужно его примонтировать.

  1. Создайте файловое хранилище.
  2. Примонтируйте файловое хранилище к кластеру Managed Kubernetes.

Если вы планируете использовать файловое хранилище для хранения бэкапов, для повышения отказоустойчивости мы рекомендуем создавать хранилище и кластер Managed Kubernetes в пулах из разных зон доступности или регионов. Подробнее в инструкции Подключить файловое хранилище к кластеру Managed Kubernetes в другом пуле.

1. Создать файловое хранилище

  1. В панели управления перейдите в раздел Облачная платформаФайловое хранилище.

  2. Нажмите Создать хранилище.

  3. Введите новое имя хранилища или оставьте имя, которое создано автоматически.

  4. Выберите регион и сегмент пула, в котором кластер Managed Kubernetes.

  5. Выберите облачную приватную подсеть, в которой будет находиться хранилище. Мы рекомендуем выбирать подсеть, в которой расположены ноды кластера Managed Kubernetes, — так будет автоматически настроена сетевая связность между нодами и хранилищем. После создания хранилища подсеть нельзя будет изменить.

  6. Введите приватный IP-адрес хранилища или оставьте первый доступный адрес из подсети, который назначается по умолчанию. После создания хранилища IP-адрес нельзя будет изменить.

  7. Выберите тип файлового хранилища:

    • HDD Базовое;
    • SSD Универсальное;
    • SSD Быстрое.

    Типы файлового хранилища отличаются значениями пропускной способности и количеством операций на чтение и запись, подробнее в таблице Лимиты файлового хранилища.

    После создания тип хранилища нельзя будет изменить.

  8. Укажите размер хранилища: от 50 ГБ до 50 ТБ. После создания можно будет увеличить файловое хранилище, но нельзя уменьшить.

  9. Выберите протокол:

    • NFSv4 — для подключения хранилища к серверам с операционной системой Linux и другими Unix-системами;
    • CIFS SMBv3 — для подключения хранилища к серверам с операционной системой Windows.

    После создания хранилища протокол нельзя будет изменить.

  10. Настройте правила доступа к файловому хранилищу:

    • доступно всем — хранилище будет доступно для любого IP-адреса приватной подсети, в которой оно создается;
    • доступ ограничен — хранилище будет доступно только для определенных IP-адресов или приватных подсетей. Если создать файловое хранилище без правил, доступ будет ограничен для всех IP-адресов. Чтобы открыть доступ, нажмите Добавить правило, введите IP-адрес или CIDR приватной подсети, выберите уровень доступа (только для протокола NFSv4) и введите комментарий. Чтобы добавить дополнительные правила, нажмите Добавить правило.

    После создания хранилища можно изменить правила доступа, для этого можно настроить новые правила доступа.

  11. Проверьте цену файлового хранилища.

  12. Нажмите Создать.

2. Примонтировать файловое хранилище к кластеру Managed Kubernetes

Процесс монтирования зависит от протокола файлового хранилища: NFSv4 или CIFS SMBv3.

  1. Создайте PersistentVolume.
  2. Создайте PersistentVolumeClaim.
  3. Добавьте файловое хранилище в контейнер.

1. Создать PersistentVolume

  1. Подключитесь к кластеру Managed Kubernetes.

  2. Создайте yaml-файл с манифестом для объекта PersistentVolume:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pv_name
    spec:
    storageClassName: storageclass_name
    capacity:
    storage: <storage_size>
    accessModes:
    - ReadWriteMany
    nfs:
    path: /shares/share-<mountpoint_uuid>
    server: <filestorage_ip_address>

    Укажите:

    • <storage_size> — размер PersistentVolume в ГБ (размер файлового хранилища), например 100 Gi. Ограничение — от 50 ГБ до 50 ТБ;
    • <mountpoint_uuid> — ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформаФайловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux;
    • <filestorage_ip_address> — IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформаФайловое хранилище → страница хранилища → вкладка Настройки → поле IP.
  3. Примените манифест:

    kubectl apply -f <persistent_volume.yaml>

    Укажите <persistent_volume.yaml> — имя yaml-файла с манифестом для создания PersistentVolume.

  4. Убедитесь, что создан объект PersistentVolume:

    kubectl get pv

2. Создать PersistentVolumeClaim

  1. Создайте yaml-файл с манифестом для объекта PersistentVolumeClaim:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: pvc_name
    spec:
    storageClassName: storageclass_name
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: <storage_size>

    Укажите <storage_size> — размер PersistentVolume в ГБ (размер файлового хранилища), например 100 Gi. Ограничение — от 50 ГБ до 50 ТБ.

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

    kubectl apply -f <persistent_volume_claim.yaml>

    Укажите <persistent_volume_claim.yaml> — имя yaml-файла с манифестом для создания PersistentVolumeClaim.

  3. Убедитесь, что создан объект PersistentVolumeClaim:

    kubectl get pvc

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

  1. Создайте yaml-файл с манифестом для объекта Deployment:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: filestorage_deployment_name
    labels:
    project: filestorage_deployment_name
    spec:
    replicas: 2
    selector:
    matchLabels:
    project: filestorage_project_name
    template:
    metadata:
    labels:
    project: filestorage_project_name
    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: <mount_path>

    Укажите <mount_path> — путь до папки внутри контейнера, в которую будет примонтировано файловое хранилище.

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

    kubectl apply -f <deployment.yaml>

    Укажите <deployment.yaml> — имя yaml-файла с манифестом для создания Deployment.