Se recomienda colocar los datos del pod en algún volumen persistente para que los datos estén disponibles incluso después de la finalización del pod. En Kubernetes (k8s), los volúmenes persistentes basados en NFS se pueden usar dentro de los pods. En este artículo, aprenderemos cómo configurar el volumen persistente y el reclamo de volumen persistente y luego discutiremos cómo podemos usar el volumen persistente a través de su nombre de reclamo en los pods k8s.
Supongo que tenemos un clúster k8s funcional y un servidor NFS. Los siguientes son detalles para la configuración del laboratorio,
- IP del servidor NFS = 192.168.1.40
- Compartir NFS = /opt/k8s-pods/data
- Clúster K8s = un nodo maestro y dos trabajadores
Nota: Asegúrese de que se pueda acceder al servidor NFS desde los nodos trabajadores e intente montar el recurso compartido nfs en cada trabajador una vez para realizar pruebas.
Cree un archivo Index.html dentro del recurso compartido nfs porque montaremos este recurso compartido en el pod de nginx más adelante en el artículo.
[[email protected] ~]$ echo "Hello, NFS Storage NGINX" > /opt/k8s-pods/data/index.html
Configurar PV basado en NFS (Volumen persistente)
Para crear un volumen persistente basado en NFS en K8s, cree el archivo yaml en el nodo principal con los siguientes contenidos:
[[email protected] ~]$ 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
Guardar y salir del archivo
Ahora cree un volumen persistente usando el archivo yaml creado anteriormente, ejecute
[[email protected] ~]$ kubectl create -f nfs-pv.yaml persistentvolume/nfs-pv created [[email protected] ~]$
Ejecute el siguiente comando kubectl para verificar el estado del volumen persistente
[[email protected] ~]$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv 10Gi RWX Recycle Available nfs 20s [[email protected] ~]$
El resultado anterior confirma que el PV se ha creado correctamente y está disponible.
Configurar reclamo de volumen persistente
Para montar un volumen persistente dentro de un pod, debemos especificar su reclamo de volumen persistente. Entonces, creemos un reclamo de volumen persistente usando el siguiente archivo yaml
[[email protected] ~]$ vi nfs-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: storageClassName: nfs accessModes: - ReadWriteMany resources: requests: storage: 10Gi
Guardar y salir del archivo.
Ejecute el comando debajo de kubectl para crear pvc usando el archivo yaml anterior,
[[email protected] ~]$ kubectl create -f nfs-pvc.yaml persistentvolumeclaim/nfs-pvc created [[email protected] ~]$
Después de ejecutar lo anterior, el plano de control buscará un volumen persistente que satisfaga el requisito del reclamo con el mismo nombre de clase de almacenamiento y luego vinculará el reclamo al volumen persistente, el ejemplo se muestra a continuación:
[[email protected] ~]$ kubectl get pvc nfs-pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nfs-pvc Bound nfs-pv 10Gi RWX nfs 3m54s [[email protected] ~]$ [[email protected] ~]$ 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 [[email protected] ~]$
El resultado anterior confirma que el reclamo (nfs-pvc) está vinculado con el volumen persistente (nfs-pv).
Ahora estamos listos para usar el volumen persistente basado en nfs dentro de los pods.
Use un volumen persistente basado en NFS dentro de un pod
Cree un pod nginx usando el archivo yaml debajo, montará un reclamo de volumen persistente en ‘/usr/share/nginx/html’
[[email protected] ~]$ 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
Guarde y cierre el archivo.
Ahora cree el pod usando el archivo yaml anterior, ejecute
[[email protected] ~]$ kubectl create -f nfs-pv-pod.yaml pod/nginx-pv-pod created [[email protected] ~]$ [[email protected] ~]$ 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> [[email protected] ~]$
Nota: Para obtener más detalles sobre el pod, kubectl describe el pod
La salida de los comandos anteriores confirma que el pod se ha creado correctamente. Ahora intente acceder a la página nginx usando el comando curl
[[email protected] ~]$ curl http://172.16.140.28 Hello, NFS Storage NGINX [[email protected] ~]$
Perfecto, la salida del comando anterior curl confirma que el volumen persistente está montado correctamente dentro del pod ya que estamos obteniendo el contenido del archivo index.html que está presente en el recurso compartido NFS.
Esto concluye el artículo, creo que tienen una idea básica sobre cómo configurar y usar un volumen persistente basado en NFS dentro de los pods de Kubernetes.
Leer también : Cómo configurar el clúster de Kubernetes (k8s) en HA con Kubeadm
Leer también : Cómo instalar y usar Helm en Kubernetes