Примонтировать файловое хранилище
Файловое хранилище можно примонтировать:
Примонтировать файловое хранилище к выделенному или облачному серверу
Процесс монтирования зависит от операционной системы на сервере и протокола файлового хранилища: NFSv4 или CIFS SMBv3.
NFSv4
CIFS SMBv3
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом NFS:
sudo apt install nfs-common
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/nfs
-
Примонтируйте файловое хранилище:
sudo mount -vt nfs "<filestorage_ip_address>:/shares/share-<mountpoint_uuid>" /mnt/nfs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
Файловое хранилище работает только с NFS-клиентом версии NFSv4. По умолчанию в ОС Windows поддерживаются NFS-клиенты версий NFSv2 и NFSv3. Подробнее о версиях NFS в статье Обзор NFS документации Microsoft.
Для работы с файловым хранилищем из Windows мы рекомендуем использовать файловое хранилище с протоколом CIFS. Если необходимо подключить хранилище с протоколом NFS, установите и используйте клиент, поддерживающий протокол NFSv4.
Linux
Windows
-
Откройте CLI.
-
Установите пакет для работы с протоколом CIFS:
sudo apt install cifs-utils
-
Создайте папку для монтирования хранилища:
sudo mkdir -p /mnt/cifs
-
Примонтируйте файловое хранилище:
sudo mount.cifs -o guest //<filestorage_ip_address>/share-<mountpoint_uuid> /mnt/cifs
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux.
-
Откройте CLI.
-
Примонтируйте файловое хранилище:
net use X: \\<filestorage_ip_address>\share-<mountpoint_uuid>
Укажите:
<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облач ная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP;<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка Windows.
Примонтировать файловое хранилище к кластеру Managed Kubernetes
Процесс монтирования зависит от протокола файлового хранилища: NFSv4 или CIFS SMBv3.
NFSv4
CIFS SMBv3
1. Создать PersistentVolume
-
Создайте 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.
-
Примените манифест:
kubectl apply -f <persistent_volume.yaml>
Укажите
<persistent_volume.yaml>
— имя yaml-файла с манифестом для создания PersistentVolume. -
Убедитесь, что создан объект PersistentVolume:
kubectl get pv
2. Создать PersistentVolumeClaim
-
Создайте 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 ТБ. -
Примените манифест:
kubectl apply -f <persistent_volume_claim.yaml>
Укажите
<persistent_volume_claim.yaml>
— имя yaml-файла с манифестом для создания PersistentVolumeClaim. -
Убедитесь, что создан объект PersistentVolumeClaim:
kubectl get pvc
3. Добавить хранилище в контейнер
-
Создайте 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>
— путь до папки внутри контейнера, в которую будет примонтировано файловое хранилище. -
Примените манифест:
kubectl apply -f <deployment.yaml>
Укажите
<deployment.yaml>
— имя yaml-файла с манифестом для создания Deployment.
- Установите CSI-драйвер для Samba.
- Создайте секрет для хранения логина и пароля.
- Создайте StorageClass.
- Создайте PersistentVolumeClaim.
- Добавьте файловое хранилище в контейнер.
1. Установить CSI-драйвер для Samba
-
Скачайте CSI-драйвер с GitHub Kubernetes CSI.
-
Установите последнюю версию драйвера:
helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.4.0 -
Проверьте, что поды установлены и запущены:
kubectl --namespace=kube-system get pods --selector="app=csi-smb-controller"
2. Создать секрет
Файловое хранилище не поддерживает разграничение прав доступа. Доступ по протоколу CIFS SMBv3 производится под пользователем guest
.
Создайте секрет для хранения логина и пароля (по умолчанию guest/guest
):
kubectl create secret generic smbcreds --from-literal username=guest --from-literal password=guest
3. Создать StorageClass
-
Создайте yaml-файл с манифестом для объекта StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storageclass_name
provisioner: smb.csi.k8s.io
parameters:
source: "//<filestorage_ip_address>/share-<mountpoint_uuid>"
csi.storage.k8s.io/provisioner-secret-name: "smbcreds"
csi.storage.k8s.io/provisioner-secret-namespace: "default"
csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
csi.storage.k8s.io/node-stage-secret-namespace: "default"
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- dir_mode=0777
- file_mode=0777Укажите:
<mountpoint_uuid>
— ID точки монтирования. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → блок Подключение → вкладка GNU/Linux;<filestorage_ip_address>
— IP-адрес файлового хранилища. Можно посмотреть в панели управления в разделе Облачная платформа → Файловое хранилище → страница хранилища → вкладка Настройки → поле IP.
-
Примените манифест:
kubectl apply -f <storage_class.yaml>
Укажите
<storage_class.yaml>
— имя yaml-файла с манифестом для создания StorageClass. -
Убедитесь, что объект StorageClass создан:
kubectl get storageclass
4. Создать PersistentVolumeClaim
-
Создайте yaml-файл с манифестом для объекта PersistentVolumeClaim:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc_name
annotations:
volume.beta.kubernetes.io/storage-class: smb
spec:
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: <storage_size>Укажите
<storage_size>
— размер PersistentVolume в ГБ (размер файлового хранилища), например100 Gi
. Ограничение — от 50 ГБ до 50 ТБ. -
Примените манифест:
kubectl apply -f <persistent_volume_claim.yaml>
Укажите
<persistent_volume_claim.yaml>
— имя yaml-файла с манифестом для создания PersistentVolumeClaim. -
Убедитесь, что объект PersistentVolumeClaim создан:
kubectl get pvc
5. Добавить хранилище в контейнер
-
Создайте 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>
— путь до папки внутри контейнера, в которую бу дет примонтировано файловое хранилище. -
Примените манифест:
kubectl apply -f <deployment.yaml>
Укажите
<deployment.yaml>
— имя yaml-файла с манифестом для создания Deployment.