¿Cómo soluciono los problemas con el montaje de mis volúmenes de Amazon EFS en Amazon EKS?
Recibo un error cuando intento montar mis volúmenes de Amazon Elastic File System (Amazon EFS) en mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS).
Resolución
Requisitos previos:
- Asegúrate de que tu sistema de archivos de Amazon EFS tenga un objetivo de montaje en cada una de las subredes de nodos de trabajo de la zona de disponibilidad.
- Confirma que utilizas efs.csi.aws.com para la definición de la clase de almacenamiento de Amazon EFS. Para obtener más información, consulta EFS storage class (Clase de almacenamiento de EFS) en el sitio web de GitHub.
- Comprueba que utilizas PersistentVolumeClaim y PersistentVolume. Para obtener más información, consulta PersistentVolumeClaim y PersistentVolume en el sitio web de GitHub.
Nota: Si usas el aprovisionamiento dinámico, no necesitas usar PersistentVolumeClaim ni PersistentVolume. Para obtener más información, consulta Dynamic Provisioning (Aprovisionamiento dinámico) en el sitio web de GitHub. - Asegúrate de haber instalado el complemento del controlador CSI de Amazon EFS en el clúster de EKS.
Comprobar que se ha configurado correctamente la red desde los nodos de trabajo de EKS a la API de Amazon EFS
Asegúrate de tener acceso a la API de Amazon EFS desde los nodos de trabajo de EFS y los pods de controladores de EFS.
Si no configuras la red para acceder a la API de Amazon EFS, es posible que recibas uno de los siguientes mensajes de error:
- «failed to provision volume with StorageClass "xxxx": rpc error: code = DeadlineExceeded desc = context deadline exceeded»
- «Could not start amazon-efs-mount-watchdog, unrecognized init system "bash" Mount attempt x/3 failed due to timeout after 15 sec»
- «Unable to attach or mount volumes: timed out waiting for the condition»
Si usas un clúster privado sin acceso saliente a Internet, debes incluir el punto de enlace de nube virtual privada (VPC) com.amazonaws.region.elasticfilesystem en tu VPC. Crea una regla de entrada para el grupo de seguridad del punto de enlace de VPC que permita el tráfico al puerto 443 desde tus subredes de nodos y nodos de trabajo. Confirma que la política vinculada al punto de enlace de VPC tenga los permisos necesarios.
Comprobar que se han configurado correctamente los objetivos de montaje de Amazon EFS
Asegúrate de haber creado los objetivos de montaje de Amazon EFS en cada zona de disponibilidad en la que se ejecutan los nodos de EKS. Por ejemplo, si has distribuido los nodos de trabajo entre us-east-1a y us-east-1b, crea objetivos de montaje en ambas zonas de disponibilidad para el sistema de archivos de EFS que deseas montar.
Si no configuras correctamente los objetivos de montaje, es posible que recibas el siguiente mensaje de error:
«Output: Failed to resolve "fs-xxxxxx.efs.us-east-1.amazonaws.com" - The file system mount target ip address cannot be found»
Comprobar que el grupo de seguridad asociado al sistema de archivos de Amazon EFS y a los nodos de trabajo permita el tráfico NFS
Si el grupo de seguridad no permite el tráfico, es posible que recibas uno de los siguientes mensajes de error:
- «Could not start amazon-efs-mount-watchdog, unrecognized init system "bash" Mount attempt x/3 failed due to timeout after 15 sec»
- «failed to provision volume with StorageClass "xxxx": rpc error: code = DeadlineExceeded desc = context deadline exceeded»
- «Unable to attach or mount volumes: timed out waiting for the condition»
El grupo de seguridad del sistema de archivos Amazon EFS debe tener una regla de entrada que permita el tráfico del sistema de archivos de red (NFS) desde el enrutamiento entre dominios sin clases (CIDR) para la VPC de tu clúster. Permite el puerto 2049 para el tráfico entrante.
El grupo de seguridad asociado a los nodos de trabajo en los que los pods no pueden montar el volumen de EFS debe tener una regla de salida. La regla de salida debe permitir el tráfico NFS desde el puerto 2049 al sistema de archivos de EFS.
Comprobar que se ha creado la ruta del subdirectorio en el sistema de archivos de Amazon EFS
Al agregar rutas de subdirectorio en volúmenes persistentes, el controlador CSI de Amazon EFS no crea la ruta del subdirectorio en el sistema de archivos. Ya debes tener el subdirectorio en el sistema de archivos para que la operación de montaje se realice correctamente. Si el subdirectorio no está en el sistema de archivos, es posible que recibas el siguiente mensaje de error:
«Output: mount.nfs4: mounting fs-18xxxxxx.efs.us-east-1.amazonaws.com:/path-in-dir:/ failed, reason given by server: No such file or directory»
Para comprobar si el subdirectorio existe en el sistema de archivos de EFS, monta el sistema de archivos de EFS en una instancia de EC2 y enumera su contenido. Si el subdirectorio no existe, utiliza el comando mkdir para crearlo.
Confirmar que la VPC del clúster utiliza el servidor DNS de Amazon
Al montar el volumen EFS con el controlador CSI de Amazon EFS, debes usar el servidor DNS de Amazon para la VPC.
Nota: Solo el DNS proporcionado por Amazon puede resolver el DNS del sistema de archivos del servicio Amazon EFS.
Para comprobar el servidor DNS, inicia sesión en el nodo de trabajo y, a continuación, ejecuta el siguiente comando:
nslookup fs-4fxxxxxx.efs.region.amazonaws.com AMAZON_PROVIDED_DNS_IP
Nota: Sustituye region por tu región de AWS. Sustituye AMAZON_PROVIDED_DNS_IP por tu dirección IP de DNS.
Si el servidor DNS personalizado no reenvía las solicitudes, es posible que recibas el siguiente mensaje de error:
«Output: Failed to resolve "fs-xxxxxx.efs.us-west-2.amazonaws.com" - The file system mount target ip address cannot be found»
Si la VPC del clúster usa un servidor DNS personalizado, configura este último para reenviar todas las solicitudes de *.amazonaws.com al servidor DNS de Amazon.
Comprobar que dispones de las opciones de montaje iam en la definición de PersistentVolume cuando utilizas una política de sistema de archivos restrictiva
Si no agregas la opción de montaje de iam con una política de sistema de archivos restrictiva, los pods mostrarán el siguiente mensaje de error:
«mount.nfs4: access denied by server while mounting 127.0.0.1:/»
Si has configurado el sistema de archivos de Amazon EFS para restringir los permisos de montaje a roles específicos de AWS Identity and Access Management (IAM), utiliza el montaje -o iam. Incluye la propiedad spec.mountOptions para permitir que el controlador CSI agregue la opción de montaje de IAM.
Ejemplo:
apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv1 spec: mountOptions: - iam
Comprobar que se ha anotado la cuenta de servicio del controlador CSI de Amazon EFS con el rol de IAM correcto que tenga los permisos necesarios
Para comprobar que la cuenta de servicio que utilizan los pods de efs-csi-controller tiene la anotación correcta, ejecuta el siguiente comando:
kubectl describe sa efs-csi-controller-sa -n kube-system
Resultado de ejemplo:
eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/AmazonEKS_EFS_CSI_DriverRole
Para confirmar que la cuenta tiene los roles y los permisos correctos de AWS Identity and Access Management (IAM), verifica el proveedor de OIDC de IAM del clúster. El rol de IAM asociado a la cuenta de servicio efs-csi-controller-sa tiene los permisos necesarios para realizar llamadas a la API de EFS. A continuación, comprueba que la política de confianza del rol de IAM confía en la cuenta de servicio efs-csi-controller-sa.
Ejemplo de política de confianza para roles de IAM:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
Comprobar que los pods del controlador CSI de EFS estén en ejecución
Para comprobar que estos pods están en ejecución en el clúster, ejecuta el siguiente comando:
kubectl get all -l app.kubernetes.io/name=aws-efs-csi-driver -n kube-system
Comprobar la operación de montaje de EFS desde el nodo de trabajo de EC2 en el que el pod no puede montar el sistema de archivos
Inicia sesión en el nodo de trabajo de Amazon EKS del pod. A continuación, utiliza el asistente de montaje de EFS para montar de forma manual el sistema de archivos de EFS en el nodo de trabajo. Para probar la operación de montaje, ejecuta el siguiente comando:
sudo mount -t efs -o tls file-system-dns-name efs-mount-point/
Si el nodo de trabajo puede montar el sistema de archivos, revisa los registros de efs-plugin del controlador CSI y los pods del nodo CSI.
Comprobar los registros del pod del controlador CSI para determinar la causa de los errores de montaje
Si el volumen no se monta, revisa los registros de efs-plugin. Para recuperar los registros del contenedor de efs-plugin, ejecuta los siguientes comandos:
kubectl logs deployment/efs-csi-controller -n kube-system -c efs-plugin kubectl logs daemonset/efs-csi-node -n kube-system -c efs-plugin
- Temas
- Containers
- Etiquetas
- Amazon Elastic Kubernetes Service
- Idioma
- Español

Contenido relevante
preguntada hace 8 meses
preguntada hace 8 meses
preguntada hace un año
preguntada hace un año