Monte un sistema de archivos Apsara File Storage NAS (NAS) en un clúster de Container Service for Kubernetes (ACK) mediante el complemento FlexVolume. Este tema describe los métodos basados en YAML y en la consola para crear un volumen persistente (PV). Posteriormente, se explica cómo crear una solicitud de volumen persistente (PVC) y desplegar un pod que utilice el almacenamiento respaldado por NAS.
Requisitos previos
Antes de empezar, asegúrese de cumplir con lo siguiente:
Un sistema de archivos NAS con un destino de montaje agregado. Cree uno en la consola de NAS. El destino de montaje y el clúster de ACK deben estar en la misma red virtual privada (VPC).consola de NAS
FlexVolume actualizado a la versión más reciente en su clúster.
kubectl configurado para conectarse al clúster. Para obtener más información, consulte Obtain the kubeconfig file of a cluster and use kubectl to connect to the cluster.
Funcionamiento
El montaje de un sistema de archivos NAS en un clúster de ACK consta de tres pasos:
Crear un PV: como administrador del clúster, defina un PV respaldado por el sistema de archivos NAS. El PV aún no está asociado a ninguna carga de trabajo.
Crear una PVC: solicite el PV. Kubernetes vincula la PVC a un PV compatible según la clase de almacenamiento, el modo de acceso y la capacidad.
Desplegar un pod: haga referencia a la PVC en su Deployment. El sistema de archivos NAS se monta en el contenedor en la ruta especificada.
Una vez instalado FlexVolume en el clúster, este gestiona las operaciones de montaje y desmontaje mediante el protocolo NFS.
Paso 1: Crear un PV
Cree un PV mediante un archivo YAML o la consola de ACK.
Opción 1: Archivo YAML
Guarde el siguiente contenido como nas-pv.yaml y ejecute kubectl apply -f nas-pv.yaml.
Reemplace <mount-target-domain> con el nombre de dominio de su destino de montaje de NAS, y <subdirectory> con la ruta del sistema de archivos NAS que desea montar (por ejemplo, /k8s).
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nas
spec:
capacity:
storage: 5Gi
storageClassName: nas
accessModes:
- ReadWriteMany
flexVolume:
driver: "alicloud/nas"
options:
server: "<mount-target-domain>"
path: "<subdirectory>"
vers: "3"
options: "nolock,tcp,noresvport"
Compruebe que el PV se creó y que se encuentra en estado Available:
kubectl get pv pv-nas
Salida esperada:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS AGE
pv-nas 5Gi RWX Retain Available nas 5s
Opción 2: Consola de ACK
Inicie sesión en la consola de ACK.
En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster deseado o en Details dentro de la columna Actions.
En el panel de navegación izquierdo, seleccione Volumes > Persistent Volumes.
Haga clic en Create en la esquina superior derecha.
En el cuadro de diálogo Create PV, configure los parámetros descritos en la siguiente tabla.
|
Parámetro |
Descripción |
Obligatorio |
Valor predeterminado |
|
PV type |
Seleccione NAS. |
Sí |
— |
|
Volume name |
Nombre único para el PV dentro del clúster. Por ejemplo: |
Sí |
— |
|
Volume plug-in |
Seleccione Flexvolume. |
Sí |
— |
|
Capacity |
Capacidad del PV. No puede superar la capacidad del sistema de archivos NAS. |
Sí |
— |
|
Access mode |
Modo de acceso. Los sistemas de archivos NAS admiten ReadWriteMany, lo cual permite que varios nodos lean y escriban simultáneamente. |
Sí |
ReadWriteMany |
|
Mount target domain name |
Nombre de dominio del destino de montaje de NAS. Consulte Gestión de destinos de montaje. |
Sí |
— |
|
Subdirectory |
Subdirectorio dentro del sistema de archivos NAS, que debe comenzar con |
No |
Directorio raíz |
|
Permissions |
Permisos de acceso sobre el directorio montado, como |
No |
Permisos originales |
|
chmod (Change Mode) |
Forma en que se aplican los cambios de permisos: Non-recursive (afecta solo al directorio montado) o Recursive (afecta al directorio montado y a todos sus subdirectorios y archivos). En versiones de FlexVolume anteriores a V1.14.6.15-8d3b7e7-aliyun, los permisos siempre se aplican de forma recursiva. A partir de la versión V1.14.6.15-8d3b7e7-aliyun, utilice este parámetro para controlar el alcance. |
No |
— |
|
Version |
Versión del protocolo NFS. Se recomienda NFSv3. Los sistemas de archivos Extreme NAS solo admiten NFSv3. |
No |
NFSv3 |
|
Labels |
Etiquetas para agregar al PV. |
No |
— |
Haga clic en Create.
Si selecciona Recursive para un directorio montado que contiene una gran cantidad de archivos, el comando chmod podría ejecutarse durante un tiempo prolongado y provocar un error en la operación de montaje o desmontaje.
Paso 2: Crear una PVC
Guarde el siguiente contenido como nas-pvc.yaml y ejecute kubectl apply -f nas-pvc.yaml.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nas
spec:
accessModes:
- ReadWriteMany
storageClassName: nas
resources:
requests:
storage: 5Gi
Kubernetes vincula la PVC al PV pv-nas cuando coinciden la clase de almacenamiento, el modo de acceso y la capacidad. Compruebe la vinculación:
kubectl get pvc pvc-nas
Salida esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-nas Bound pv-nas 5Gi RWX nas 5s
Un valor STATUS igual a Bound confirma que la PVC está vinculada al PV.
Paso 3: Desplegar un pod
Guarde el siguiente contenido como nas-pod.yaml y ejecute kubectl apply -f nas-pod.yaml.
El sistema de archivos NAS se monta en /data dentro del contenedor.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nas-static
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: pvc-nas
mountPath: /data
volumes:
- name: pvc-nas
persistentVolumeClaim:
claimName: pvc-nas
Verifique que el pod se esté ejecutando y que el volumen esté montado:
kubectl get pods -l app=nginx
Salida esperada:
NAME READY STATUS RESTARTS AGE
nas-static-xxxxxxxxx-xxxxx 1/1 Running 0 30s
Para confirmar que el sistema de archivos NAS está montado dentro del contenedor, ejecute:
kubectl exec -it <pod-name> -- df -h | grep /data
La salida muestra el sistema de archivos NAS montado en /data.