Solución de problemas

En esta página, se incluyen pasos para solucionar algunos problemas y errores comunes.

Instancia con estado FAILED

El estado FAILED significa que se perdieron los datos de la instancia y que esta se debe borrar.

Se seguirá facturando las instancias de Parallelstore en estado FAILED hasta que se borren.

Para recuperar el estado de una instancia, sigue las instrucciones que se indican en Administra instancias: Recupera una instancia.

Para borrar una instancia, consulta Administra instancias: Borra una instancia.

Se agota el tiempo de espera durante las pruebas de red o el montaje de dfuse

Si, al activar tu instancia de Parallelstore, se agota el tiempo de espera del comando dfuse -m, o si se agota el tiempo de espera de los comandos de prueba de red, como self_test o daos health net-test, es posible que se deba a un problema de conectividad de red.

Para verificar la conectividad con los servidores de Parallelstore, ejecuta el siguiente comando:

self_test --use-daos-agent-env -r 1

Si la prueba informa un problema de conexión, puede deberse a dos motivos:

Es posible que el agente de DAOS haya seleccionado la interfaz de red incorrecta durante la configuración.

Es posible que debas excluir las interfaces de red que no puedan acceder a las IPs de la lista access_points.

  1. Ejecuta ifconfig para enumerar las interfaces de red disponibles. Un ejemplo de resultado puede mostrar varias interfaces de red, como eth0, docker0, ens8, lo, etcétera.

  2. Detén daos_agent.

  3. Edita /etc/daos/daos_agent.yml para excluir las interfaces de red no deseadas. Quita el comentario de la línea exclude_fabric_ifaces y actualiza los valores. Las entradas que incluyas deben ser específicas para tu situación. Por ejemplo:

    exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
    
  4. Reinicia daos_agent.

La dirección IP de la instancia o del cliente entra en conflicto con las direcciones IP internas

Las instancias y los clientes de Parallelstore no pueden usar una dirección IP del rango de subred 172.17.0.0/16. Consulta Problemas conocidos para obtener más información.

ENOSPC cuando hay capacidad sin usar en la instancia

Si tu instancia usa la segmentación mínima o la segmentación equilibrada (opción predeterminada), es posible que se produzcan errores de ENOSPC, incluso si los archivos existentes no usan toda la capacidad de la instancia. Es probable que esto suceda cuando se escriben archivos grandes que, por lo general, superan los 8 GiB o cuando se importan esos archivos desde Cloud Storage.

Usa el máximo fraccionamiento de archivos para reducir la probabilidad de que se produzcan estos errores.

Solución de problemas de Google Kubernetes Engine

En la siguiente sección, se indican algunos problemas comunes y los pasos para resolverlos.

Transport endpoint is not connected en Pods de carga de trabajo

Este error se debe a la finalización de dfuse. En la mayoría de los casos, dfuse se cerró debido a falta de memoria. Usa las anotaciones de Pod gke-parallelstore/[cpu-limit|memory-limit] para asignar más recursos al contenedor de sidecar de Parallelstore. Puedes establecer gke-parallelstore/memory-limit: "0" para quitar la limitación de memoria del sidecar si no sabes cuánta memoria quieres asignarle. Ten en cuenta que esto solo funciona con clústeres estándar. Con los clústeres de Autopilot, no puedes usar el valor 0 para anular los límites y las solicitudes de recursos del contenedor secundario. Debes establecer explícitamente un límite de recursos más grande para el contenedor sidecar.

Una vez que modifiques las anotaciones, deberás reiniciar el Pod de carga de trabajo. Agregar anotaciones a una carga de trabajo en ejecución no modifica de forma dinámica la asignación de recursos.

Advertencias de eventos de Pod

Si no se pueden iniciar los Pods de la carga de trabajo, verifica los eventos de los Pods:

kubectl describe pod POD_NAME -n NAMESPACE

Las siguientes soluciones son para errores comunes.

Problemas de habilitación del controlador de CSI

A continuación, se indican los errores comunes de habilitación del controlador de CSI:

MountVolume.MountDevice failed for volume "volume" : kubernetes.io/csi:
attacher.MountDevice failed to create newCsiDriverClient:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
MountVolume.SetUp failed for volume "volume" : kubernetes.io/csi:
mounter.SetUpAt failed to get CSI client:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers

Estas advertencias indican que el controlador de CSI no está habilitado o no se está ejecutando.

Si tu clúster se acaba de escalar, actualizar o actualizar a una versión superior, esta advertencia es normal y debería ser transitoria. Los Pods del controlador de CSI tardan unos minutos en funcionar después de las operaciones del clúster.

De lo contrario, confirma que el controlador de CSI esté habilitado en tu clúster. Consulta Habilita el controlador de CSI para obtener más detalles. Si el CSI está habilitado, cada nodo muestra un Pod llamado parallelstore-csi-node-id en funcionamiento.

Errores de AttachVolume.Attach

Después de que se programe el Pod en un nodo, el volumen se adjuntará al nodo y se creará el Pod de activador si se usa la activación del nodo.

Esto sucede en el controlador y requiere el paso AttachVolume del controlador attachdetach.

Código de error Advertencia de evento de Pod Solución
InvalidArgument
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = InvalidArgument desc = an error occurred while preparing mount options: invalid mount options
Se pasan marcas de activación no válidas a PersistentVolume o StorageClass. Consulta las opciones de montaje de dfuse compatibles para obtener más detalles.
NotFound
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = NotFound desc = failed to get instance "instance"
La instancia de Parallelstore no existe. Verifica que el volumeHandle del PersistentVolume tenga el formato correcto.

Fallas de MountVolume.MountDevice

Después de que el volumen se adjunte a un nodo, se transferirá al nodo.

Esto sucede en el nodo y requiere el paso MountVolume.MountDevice de kubelet.

Código de error Advertencia de evento de Pod Solución
FailedPrecondition
  • MountVolume.MountDevice failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod "pod" expected to exist but was not found
Por lo general, este error se produce cuando se borra manualmente el pod de montaje. Borra todas las cargas de trabajo que consumen el PVC y vuelve a implementarlas. Esto creará un Pod de montaje nuevo.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Se produjo un error al establecer conexión con la instancia de Parallelstore. Verifica que tu red de VPC y tus puntos de acceso estén configurados correctamente.

Fallas de MountVolume.SetUp

Después de que el volumen se transfiera al nodo, se activará y se proporcionará al contenedor en el Pod. Esto sucede en el nodo y requiere el paso MountVolume.SetUp en kubelet.

Soporte de la cámara

Código de error Advertencia de evento de Pod Solución
ResourceExhausted
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container failed with error: signal: killed
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container terminated due to OOMKilled, exit code: 137
El proceso de dfuse finalizó, lo que suele deberse a una condición de memoria insuficiente (OOM). Considera aumentar el límite de memoria del contenedor de archivo adicional con la anotación gke-parallelstore/memory-limit.

Si no sabes con certeza la cantidad de memoria que deseas asignar al complemento de Parallelstore, te recomendamos que establezcas gke-parallelstore/memory-limit: "0" para eliminar la restricción de memoria que impone Parallelstore.

Anulado
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = NodePublishVolume request is aborted due to rate limit
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = An operation with the given volume key key already exists
Se anuló la operación de montaje de volumen debido a la límite de frecuencia o a operaciones existentes. Esta advertencia es normal y debería ser transitoria.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Si proporcionaste argumentos no válidos en StorageClass o PersistentVolume, el registro de errores indicará los campos con los argumentos no válidos. Para el aprovisionamiento dinámico, consulta la clase de almacenamiento. Para el aprovisionamiento estático, marca Volumen persistente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = can not find the sidecar container in Pod spec No se insertó el contenedor sidecar de Parallelstore. Verifica que la anotación del Pod gke-parallelstore/volumes: "true" esté configurada correctamente.

Soporte de nodo

Código de error Advertencia de evento de Pod Solución
Anulado
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = NodePublishVolume request is aborted due to rate limit
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = An operation with the given volume key key already exists
Se anuló la operación de montaje de volumen debido a un límite de frecuencia o a operaciones existentes. Esta advertencia es normal y debería ser transitoria.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Si proporcionaste argumentos no válidos en StorageClass o PersistentVolume, el registro de errores indicará los campos con los argumentos no válidos. Para el aprovisionamiento dinámico, consulta la clase de almacenamiento. Para el aprovisionamiento estático, marca Volumen persistente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod expected to exist but was not found No existe el Pod de Parallelstore mounter. Si el Pod de montaje se borró por accidente, vuelve a crear todas las cargas de trabajo para que se vuelva a crear.
DeadlineExceeded MountVolume.SetUp failed for volume "volume" : rpc error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available No se inició el servidor gRPC del Pod de montaje. Revisa los registros del pod de montaje en busca de errores.

Soluciona problemas de redes de VPC

Se denegó el permiso para agregar la conexión de servicio servicenetworking.googleapis.com

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have 
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

Este error significa que no tienes el permiso de IAM servicenetworking.services.addPeering en tu cuenta de usuario.

Consulta Control de acceso con IAM para obtener instrucciones sobre cómo agregar uno de los siguientes roles a tu cuenta:

  • roles/compute.networkAdmin o
  • roles/servicenetworking.networksAdmin

No se pueden modificar los rangos asignados en CreateConnection

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection.

Este error se muestra cuando ya creaste un peering de VPC en esta red con diferentes rangos de IP. Existen dos soluciones posibles:

Reemplaza los rangos de IP existentes:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

O bien, agrega el nuevo rango de IP a la conexión existente:

  1. Recupera la lista de rangos de IP existentes para el peering:

    EXISTING_RANGES=$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())"
    )
    
  2. Luego, agrega el nuevo rango al peering:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges=$EXISTING_RANGES,IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

Se agotó el rango de direcciones IP

La creación de la instancia puede fallar con el siguiente error de rango agotado:

ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

Si ves este mensaje de error, sigue la guía de VPC para volver a crear el rango de IP o extender el rango de IP existente.

Si vuelves a crear una instancia de Parallelstore, debes volver a crear el rango de IP en lugar de extenderlo.

Se bloqueó el mantenimiento debido a un presupuesto de interrupción del Pod restrictivo

Es posible que la consola de Google Cloud muestre el siguiente mensaje de error que indica que no se puede continuar con el mantenimiento porque hay un presupuesto de interrupción de Pods (PDB) configurado para permitir cero expulsiones de Pods:

GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.

Si ves este mensaje de error, identifica el Pod problemático siguiendo estos pasos:

  1. Haz clic en el mensaje de error para abrir el panel de estadísticas de errores.

  2. Verifica el nombre del Pod en la sección Unpermissive Pod Disruption Budgets.

  3. Si el Pod es parallelstorecsi-mount, puedes ignorar este error, ya que no impedirá el mantenimiento. En el caso de cualquier otro Pod, examina tu PDB.