Compartir a través de


Almacenamiento NFS externo en AKS Edge Essentials

Las soluciones de almacenamiento persistente le permiten almacenar datos de aplicación externos al pod que ejecuta la aplicación y le permiten mantener los datos de la aplicación, incluso si se produce un error en el pod de la aplicación. Es posible usar el aprovisionador de rutas de acceso local para el almacenamiento local; sin embargo, el almacenamiento depende de la disponibilidad del nodo. También es posible desacoplar la disponibilidad del almacenamiento del ciclo de vida del nodo mediante proveedores de almacenamiento externos.

En este artículo se describe cómo configurar un proveedor NFS e implementar un contenedor de ejemplo con un PV conectado a NFS en el clúster de AKS Edge Essentials.

Para obtener más información sobre el complemento NFS, consulte nfs-subdir-external-provisioner.

Paso 1: obtener información de conexión para el servidor NFS

Asegúrese de que el servidor NFS sea accesible desde el clúster de AKS Edge Essentials y obtenga la información que necesita para conectarse a él. La información debe incluir el nombre de host del servidor NFS y la ruta de acceso del recurso compartido exportado. Si el servidor NFS tiene mecanismos de autenticación, asegúrese de obtener esa información también.

Paso 2: descargar recursos

Obtenga las plantillas de recursos. Para configurar el aprovisionamiento, descargue un conjunto de archivos de plantilla YAML, edítelos para agregar la información de conexión del servidor NFS y, a continuación, aplique cada archivo de implementación.

Nota

El ejemplo de NFS usado se basa en el código de ejemplo nfs-subdir-external-provisioner y se ajusta para la máquina virtual de AKS Edge Essentials.

  1. Descargue el código fuente más reciente .zip desde el repositorio de GitHub de AKS-Edge Essentials.

  2. Extraiga el tgz en una carpeta deseada.

  3. Abra una sesión de PowerShell como administrador.

  4. Cambie al directorio de ejemplo de NFS: AKS-Edge : ejemplos->> almacenamiento -> NFS.

  5. Con el dir comando , compruebe que la carpeta NFS tiene los siguientes archivos:

        Directory: C:\Users\AKS-Edge\samples\storage\nfs
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         1/25/2023  10:43 AM            345 class.yaml
    -a----         1/25/2023   1:14 PM            979 deployment.yaml
    -a----         1/25/2023   1:16 PM            371 pod.yaml
    -a----         1/25/2023   1:17 PM            218 pvc.yaml
    -a----          1/9/2023  10:19 AM           1900 rbac.yaml
    

Paso 3: configuración de la autorización

Un clúster de AKS Edge Essentials tiene habilitado el RBAC predeterminado, por lo que no es necesario configurar ningún otro RBAC. Sin embargo, si se encuentra en un espacio de nombres o proyecto distinto del predeterminado, edite rbac.yaml antes de implementar la plantilla. En una ventana de PowerShell con privilegios elevados, ejecute el siguiente cmdlet:

kubectl create -f .\rbac.yaml

Paso 4: configurar el aprovisionamiento externo del subdirectorio NFS

A continuación, edite el archivo de implementación del aprovisionamiento de NFS para agregar información de conexión para el servidor NFS. Edite deploy/deployment.yaml y reemplace los valores siguientes:

  1. Reemplace el nombre VALUE de host del servidor en name: NFS_SERVER.

  2. Reemplace el nombre server de host del servidor en volumes ->nfs.

  3. Reemplace el nombre VALUE de host del servidor en name: NFS_PATH.

  4. Reemplace el nombre path de host del servidor en volumes ->nfs.

  5. Abra una ventana de PowerShell como administrador.

  6. Cree una carpeta que se usará para volúmenes persistentes dentro del nodo:

    Invoke-AksEdgeNodeCommand -NodeType Linux -command "sudo mkdir /var/persistentVolumes"
    

    Sugerencia

    La guía actual usa la carpeta /var/persistenVolumes . Si desea cambiar la carpeta, cree otra carpeta de montaje y establezca los permisos adecuados. Además, actualice el archivo deployment.yaml con el nuevo directorio.

  7. Implemente los archivos YAML necesarios:

    kubectl create -f .\class.yaml
    kubectl create -f .\deployment.yaml
    kubectl create -f .\pvc.yaml
    kubectl create -f .\pod.yaml
    

Paso 5: comprobación de los recursos creados

Si todo se ejecuta y se adjunta correctamente, debería ver algo similar al siguiente. En primer lugar, debería ver que el PV se ha creado con kubectl get pv:

PS C:\WINDOWS\system32> kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS   REASON   AGE
pvc-72dd0e5a-1064-424d-b534-d414b6693aaa   1Mi        RWX            Delete           Bound    default/test-claim   nfs-client              20s

A continuación, la PVC se ha enlazado mediante kubectl get pvc:

PS C:\WINDOWS\system32> kubectl get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc      Bound    pvc-72dd0e5a-1064-424d-b534-d414b6693aaa   1Mi        RWX            nfs-client     25s

Por último, debería ver la prueba de volumen y el nfs-client-provisioner mediante kubectl get pods:

PS C:\WINDOWS\system32> kubectl get pods
NAME                                      READY   STATUS      RESTARTS   AGE
nfs-client-provisioner-696845f854-wz5cp   1/1     Running     0          2m
volume-test                               1/1     Running     0          2m

Paso 6: probar el almacenamiento persistente

Una prueba final es asegurarse de que el almacenamiento es persistente en la unidad conectada a NFS.

Empiece por escribir algo en el pod. En una ventana de PowerShell con privilegios elevados, ejecute el siguiente cmdlet:

kubectl exec volume-test -- sh -c "echo Hello AKS Edge! > /data/Test-NFS.txt"

Ahora, vaya a la unidad compartida NFS y busque un archivo denominado Test-NFS.txt. Abra el archivo y debería ver una línea que dice "Hello AKS Edge!"

Por último, elimine el pod para simular un error en un pod o incluso una implementación que se va a quitar mediante el siguiente cmdlet:

kubectl delete -f .\pod.yaml

Compruebe que el pod se ha quitado y, a continuación, vuelva a implementar el pod de prueba por volumen :

kubectl apply -f .\pod.yaml

Por último, lea el contenido del archivo que se escribió anteriormente. Si todo se ejecutó correctamente, debería ver el mensaje "Hello AKS Edge!":

kubectl exec volume-test -- sh -c "cat /data/Test-NFS.txt"

Paso 7: limpieza de la implementación

Una vez que haya terminado con el almacenamiento NFS, vaya a PowerShell y limpie el área de trabajo mediante la ejecución del siguiente script:

kubectl delete -f .\pod.yaml
kubectl delete -f .\pvc.yaml
kubectl delete -f .\deployment.yaml
kubectl delete -f .\class.yaml

Pasos siguientes