Подключить файловое хранилище к Managed Kubernetes по протоколу NFS
- Подготовьте инфраструктуру для подключения файлового хранилища к Managed Kubernetes.
- Закажите подключение файлового хранилища.
- Проверьте сетевую доступность файлового хранилища.
- Создайте манифест для PersistentVolume.
- Создайте манифест для PersistentVolumeClaim.
- Добавьте файловое хранилище в контейнер Deployment.
- Проверьте подключение файлового хранилища.
Заказать подключение файлового хранилища
Создайте тикет на подключение файлового хранилища и укажите:
- размер файлового хранилища;
- протокол: NFS;
- инфраструктуру: кластер Kubernetes;
- IP-адрес: адрес приватной сети облачной платформы, которую вы добавили к кластеру Managed Kubernetes.
Дождитесь ответа в тикете. В ответе будет предоставлена команда с параметрами подключения:
- GNU/Linux
- Windows
sudo mkdir -p /mnt/nfs && mount.nfs4 -rw x.x.x.x:/<UUID> /mnt/nfs
Параметры подключения:
x.x.x.x
— IP-адрес;/share/<UUID>
— путь к файловому хранилищу.
mount -o anon x.x.x.x:/share/<UUID> z:
Параметры подключения:
x.x.x.x
— IP-адрес;/share/<UUID>
— путь к файловому хранилищу.
Проверить сетевую доступность файлового хранилища
На ноде кластера Managed Kubernetes выполните команду:
ping <nfs-server ip-address>
Укажите
<nfs-server ip-address>
— IP-адрес из параметров подключения.Дождитесь отображения отправленных и принятых пакетов. Если указан правильный IP-адрес, но пакеты не отображаются, создайте тикет.
Создать манифест для PersistentVolume
Подробнее о персистентных дисках в статье Персистентные диски.
Создайте файл 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Укажите:
storage_size
— размер файлового хранилища, который был указан в тикете на подключение файлового хранилища (например, 500Gi);path
— путь из команды с параметрами подключения;ip_address
— IP-адрес из команды с параметрами подключения.
Примените манифест:
kubectl apply -f sfs_persistent_volume.yaml
Проверьте, что PersistentVolume создан:
kubectl get pv
Создать манифест для PersistentVolumeClaim
Создайте файл 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.Примените манифест:
kubectl apply -f sfs_persistent_volume_claim.yaml
Проверьте, что PersistentVolumeClaim создан:
kubectl get pvc
Добавить файловое хранилище в контейнер Deployment
Создайте файл 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
— путь внутри контейнера, куда будет смонтировано файловое хранилище.
Примените манифест:
kubectl apply -f deployment.yaml
Проверить подключение файлового хранилища
Выведите имена контейнеров из Deployment
sfs-test-deployment
:kubectl get pods -l=project=sfs-test-deployment -A
Подключитесь к контейнеру:
kubectl -it container_name sh
Укажите
container_name
— имя контейнера.Проверьте, что файловое хранилище смонтировалось:
mount -l | grep nfs
Проверьте, что объем тома соответствует параметру
storage_size
из файла sfs_persistent_volume.yaml:df -h
Запишите и выведите текст:
echo "Hello World!" > mount_path/hello.txt
cat mount_path/hello.txtУкажите
mouth_path
— путь внутри контейнера, куда было смонтировано файловое хранилище.