Подключить файловое хранилище к Managed Kubernetes по протоколу NFS
- Подготовьте инфраструктуру для подключения файлового хранилища к Managed Kubernetes.
- Закажите подключение файлового хранилища.
- Проверьте сетевую доступность файлового хранилища.
- Создайте манифест для PersistentVolume.
- Создайте манифест для PersistentVolumeClaim.
- Добавьте файловое хранилище в контейнер Deployment.
- Проверьте подключение файлового хранилища.
Заказать подключение файлового хранилища
-
Создайте тикет на подключение файлового хранилища и укажите:
- размер файлового хранилища;
- протокол: NFS;
- инфраструктуру: кластер Kubernetes;
- IP-адрес: адрес приватной сети облачной платформы, которую вы добавили к кластеру Managed Kubernetes.
-
Дождитесь ответа в тикете. В ответе будет предоставлена команда с параметрами подключения:
Проверить сетевую доступность файлового хранилища
-
На ноде кластера 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
— путь внутри контейнера, куда было смонтировано файловое хранилище.