es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadiendo PersistentVolumeClaim en un espacio de nombres diferente con el error ‘no se pudo aprovisionar el volumen con StorageClass… Falta el parámetro de modo de aprovisionamiento’.

Estoy siguiendo https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html para vincular EFS a EKS.
Tengo dos espacios de nombres en mis clústeres de k8s: dev y stage, y según entiendo, necesitaría tener dos PersistentVolumeClaims que se mapeen al PersistentVolume y StorageClass compartido. Entonces, después de ejecutar los siguientes 3 comandos:


kubectl apply -f specs/pv.yaml
kubectl apply -f specs/claim.yaml
kubectl apply -f specs/storageclass.yaml

y mediante el comando kubectl get sc,pv,pvc1 -n dev, puedo ver los 3 elementos sin problema. Sin embargo, al intentar agregarlo al espacio de nombres stage con el comando kubectl apply -f specs/claim.yaml --namespace=stage, obtengo los siguientes errores ya que efs-claim queda atascado en un estado PENDING indefinido:


Name: efs-claim
Namespace: stage
StorageClass: efs-sc
Status: Pending
Volume:
Labels: <none>
Annotations: volume.beta.kubernetes.io/storage-provisioner: efs.csi.aws.com
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode: Filesystem
Used By: foo-api-stage-chart-12345-abcde
foo-api-stage-chart-12345-abcde
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Provisioning 107s efs.csi.aws.com_ip-xxx External provisioner is provisioning volume for claim "stage/efs-claim"
Warning ProvisioningFailed 107s efs.csi.aws.com_ip-xxx failed to provision volume with StorageClass "efs-sc": rpc error: code = InvalidArgument desc = Missing provisioningMode parameter
Normal ExternalProvisioning 4s (x8 over 107s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "efs.csi.aws.com" or manually created by system administrator

¿Qué está causando el error “efs.csi.aws.com_ip-xxx fallo al proporcionar volumen con StorageClass ‘efs-sc’: rpc error: code = InvalidArgument desc = Missing provisioningMode parameter”?

No fue necesario proporcionar dicho parámetro en el espacio de nombres dev, ¿por qué se requiere para un espacio de nombres diferente como stage?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que falta el parámetro provisioningMode al aprovisionar el volumen para el efs-claim en el espacio de nombres stage. Este parámetro es requerido por el controlador de Interfaz de Almacenamiento de Contenedor (CSI) de EFS para determinar el modo de aprovisionamiento para el sistema de archivos EFS en el que se debe crear el volumen.

    Es posible que el parámetro provisioningMode se haya proporcionado implícitamente al crear el PersistentVolumeClaim en el espacio de nombres dev, pero no se está proporcionando en el espacio de nombres stage, lo que resulta en el error.

    Para solucionar esto, debes actualizar el archivo claim.yaml para el espacio de nombres stage para incluir el parámetro provisioningMode en la sección de parameters del campo spec, de la siguiente manera:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: efs-claim
      namespace: stage
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      storageClassName: efs-sc
      volumeMode: Filesystem
      dataSource:
        kind: NFS
        apiGroup: v1
        path: /example/path
        server: example.com
      selector:
        matchLabels:
          env: stage
      volumeName:
      storageCapacity:
      accessMode:
      mountOptions:
      reclaimPolicy:
      mountPropagation:
      parameters:
        provisioningMode: ProvisionedThroughput
    

    Asegúrate de reemplazar el valor ProvisionedThroughput con el valor apropiado para tu caso de uso.

    Después de actualizar el archivo claim.yaml, aplícalo nuevamente con el comando kubectl apply -f specs/claim.yaml --namespace=stage para crear el PersistentVolumeClaim efs-claim con el parámetro provisioningMode requerido para el espacio de nombres stage.

Comments are closed.