Как настроить постоянный том на основе NFS в Kubernetes

Как настроить постоянный том на основе 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

Сохраните и выйдите из файла

Как настроить постоянный том на основе NFS в Kubernetes

Теперь создайте постоянный том, используя созданный выше файл 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

Сохраните и закройте файл.

Как настроить постоянный том на основе NFS в Kubernetes

Выполните команду ниже 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

Сохраните и закройте файл.

Как настроить постоянный том на основе NFS в Kubernetes

Теперь создайте модуль, используя указанный выше файл 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.