Как настроить постоянный том на основе NFS в Kubernetes
Рекомендуется поместить данные модуля в некоторый постоянный том, чтобы данные были доступны даже после завершения работы модуля. В Kubernetes (k8s) постоянные тома на основе NFS могут использоваться внутри модулей. В этой статье мы узнаем, как настроить постоянный том и утверждение постоянного тома, а затем обсудим, как мы можем использовать постоянный том через его имя утверждения в подах k8s.
Я предполагаю, что у нас есть работающий кластер k8s и сервер NFS . Ниже приведены подробные сведения о настройке лаборатории.
- IP-адрес сервера NFS = 192.168.1.40
- Общий ресурс NFS = /opt/k8s-pods/data
- Кластер K8s = один главный и два рабочих узла
Примечание. Убедитесь, что сервер NFS доступен для рабочих узлов, и попробуйте один раз смонтировать общий ресурс nfs на каждом рабочем узле для тестирования.
Создайте файл Index.html внутри общего ресурса nfs, потому что мы будем монтировать этот общий ресурс в модуле nginx позже в статье.
[root@infoit~]$ echo "Hello, NFS Storage NGINX" > /opt/k8s-pods/data/index.html
Настроить PV на основе NFS (постоянный том)
Чтобы создать постоянный том на основе NFS в K8s, создайте файл yaml на главном узле со следующим содержимым:
[root@infoit ~]$ vim nfs-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 10Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Recycle storageClassName: nfs mountOptions: - hard - nfsvers=4.1 nfs: path: /opt/k8s-pods/data server: 192.168.1.40
Сохраните и выйдите из файла
Теперь создайте постоянный том, используя созданный выше файл yaml, запустите
[root@infoit ~]$ kubectl create -f nfs-pv.yaml persistentvolume/nfs-pv created [root@infoit ~]$
Выполните следующую команду kubectl, чтобы проверить состояние постоянного тома
[root@infoit ~]$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv 10Gi RWX Recycle Available nfs 20s [root@infoit ~]$
Приведенный выше вывод подтверждает, что PV был успешно создан и доступен.
Настроить утверждение постоянного тома
Чтобы смонтировать постоянный том внутри модуля, мы должны указать его утверждение постоянного тома. Итак, давайте создадим утверждение постоянного тома, используя следующий файл yaml
[root@infoit ~]$ vi nfs-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: storageClassName: nfs accessModes: - ReadWriteMany resources: requests: storage: 10Gi
Сохраните и закройте файл.
Выполните команду ниже kubectl, чтобы создать pvc, используя указанный выше файл yaml,
[root@infoit ~]$ kubectl create -f nfs-pvc.yaml persistentvolumeclaim/nfs-pvc created [root@infoit ~]$
После выполнения вышеописанного управления плоскость управления будет искать постоянный том, который удовлетворяет требованию заявки с тем же именем класса хранения, а затем привяжет заявку к постоянному тому, пример показан ниже:
[root@infoit ~]$ kubectl get pvc nfs-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nfs-pvc Bound nfs-pv 10Gi RWX nfs 3m54s [root@infoit ~]$ [root@infoit ~]$ kubectl get pv nfs-pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv 10Gi RWX Recycle Bound default/nfs-pvc nfs 18m [root@infoit ~]$
Приведенные выше выходные данные подтверждают, что заявка ( nfs-pvc ) связана с постоянным томом ( nfs-pv ).
Теперь мы готовы использовать постоянный том на основе nfs вне контейнеров.
Использование постоянного тома на основе NFS внутри модуля
Создайте модуль nginx, используя файл yaml, он будет монтировать постоянное требование тома в ‘ /usr/share/nginx/html ‘
[root@infoit ~]$ vi nfs-pv-pod apiVersion: v1 kind: Pod metadata: name: nginx-pv-pod spec: volumes: - name: nginx-pv-storage persistentVolumeClaim: claimName: nfs-pvc containers: - name: nginx image: nginx ports: - containerPort: 80 name: "nginx-server" volumeMounts: - mountPath: "/usr/share/nginx/html" name: nginx-pv-storage
Сохраните и закройте файл.
Теперь создайте модуль, используя указанный выше файл yaml, запустите
[root@infoit ~]$ kubectl create -f nfs-pv-pod.yaml pod/nginx-pv-pod created [root@infoit ~]$ [root@infoit ~]$ kubectl get pod nginx-pv-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-pv-pod 1/1 Running 0 66s 172.16.140.28 k8s-worker-2 <none> <none> [root@infoit ~]$
Примечание. Чтобы получить более подробную информацию о модуле , kubectl describe pod <pod-name>
Приведенные выше выходные данные команд подтверждают, что модуль был успешно создан. Теперь попробуйте получить доступ к странице nginx с помощью команды curl
[root@infoit ~]$ curl http://172.16.140.28 Hello, NFS Storage NGINX [root@infoit ~]$
Отлично, приведенный выше вывод команды curl подтверждает, что постоянный том правильно смонтирован внутри модуля, поскольку мы получаем содержимое файла index.html, который присутствует в общей папке NFS.
На этом статья завершается. Думаю, вы, ребята, получили общее представление о том, как настроить и использовать постоянный том на основе NFS внутри модулей Kubernetes.