Solución de problemas

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

Instancia FAILED

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

Las instancias de Parallelstore en un estado FAILED se seguirán facturando 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, lee Cómo administrar instancias: Borra una instancia.

Tiempos de espera durante el montaje de dfuse o las pruebas de red

Si, cuando activas 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 el agente de DAOS haya seleccionado la interfaz de red incorrecta durante la configuración.

Para verificar el agente de DAOS, ejecuta

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

Si la prueba informa un problema de conexión, es posible que debas excluir las interfaces de red que no pueden conectarse a las IP de la lista access_points.

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

  2. Detén el 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 son específicas de tu situación. Por ejemplo:

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

ENOSPC cuando hay capacidad sin usar en la instancia

Si tu instancia usa el seccionamiento equilibrado mínimo o predeterminado, es posible que encuentres errores 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 desde Cloud Storage.

Usa el máximo de fragmentación de archivos para reducir la probabilidad de 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 cargas de trabajo

Este error se debe a la finalización de dfuse. En la mayoría de los casos, dfuse se cerró debido a que se agotó la memoria. Usa las anotaciones de Pod gke-parallelstore/[cpu-limit|memory-limit] para asignar más recursos al contenedor de sidecar de Parallelstore. Puedes configurar 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 lateral. Debes establecer explícitamente un límite de recursos más grande para el contenedor de sidecar.

Una vez que hayas modificado las anotaciones, debes reiniciar el Pod de tu 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 los Pods de tu carga de trabajo no se pueden iniciar, verifica los eventos de Pod:

kubectl describe pod POD_NAME -n NAMESPACE

Las siguientes soluciones son para errores comunes.

Problemas con la habilitación del controlador de CSI

Estos son algunos de 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 acabas de escalar, actualizar o mejorar tu clúster, esta advertencia es normal y debería ser transitoria. Los pods del controlador de CSI tardan unos minutos en estar funcionales 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.

Fallas de MountVolume.SetUp

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
Se cerró el proceso de dfuse, lo que suele deberse a un error de OOM. Considera aumentar el límite de memoria del contenedor de archivo adicional con la anotación gke-parallelstore/memory-limit.

Si no estás seguro de la cantidad de memoria que deseas asignar a parallelstore-sidecar, te recomendamos que configures 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 activación del volumen debido al límite de frecuencia o a las 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 en el volumen persistente, el registro de errores indicará los campos con los argumentos no válidos. Para el aprovisionamiento dinámico, verifica la Clase de almacenamiento. Para el aprovisionamiento estático, consulta el 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 inyectó el contenedor de sidecar de Parallelstore. Verifica que la anotación gke-parallelstore/volumes: "true" del pod esté configurada correctamente.

Soluciona problemas de redes de VPC

Se denegó el permiso para agregar el vínculo de red del 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 vínculo 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

También puedes agregar el nuevo rango de IP a la conexión existente:

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

    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
    

Agotamiento del rango de direcciones IP

Problema: La creación de la instancia falla con el error de agotamiento del rango:

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

Solución: Sigue la guía de VPC para volver a crear el rango de IP o extender el existente.

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