En esta página, se incluyen pasos para solucionar problemas y errores comunes.
Instancia `FAILED`
El estado FAILED significa que se perdieron los datos de la instancia y que se debe borrar.
Las instancias de Parallelstore en estado FAILED se siguen facturando hasta que se borran.
Para recuperar el estado de una instancia, sigue las instrucciones en Administra instancias: Recupera una instancia.
Para borrar una instancia, lee Administra instancias: Borra una instancia.
Tiempos de espera agotados durante las pruebas de red o de activación de dfuse
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, esto puede deberse a un problema de conectividad de red.
Para verificar la conectividad con los servidores de Parallelstore, ejecuta
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 alcanzar las IPs
de la lista access_points.
Ejecuta
ifconfigpara enumerar las interfaces de red disponibles. Un ejemplo de resultado puede mostrar varias interfaces de red, comoeth0,docker0,ens8,lo, etcétera.Detén el daos_agent.
Edita
/etc/daos/daos_agent.ymlpara excluir las interfaces de red no deseadas. Quita la marca de comentario de la líneaexclude_fabric_ifacesy actualiza los valores. Las entradas que incluyes son específicas para tu situación. Por ejemplo:exclude_fabric_ifaces: ["docker0", "ens8", "lo"]Reinicia el 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 el mínimo o (el valor predeterminado de) el fraccionamiento equilibrado, 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, son mayores que 8 GiB o cuando se importan esos archivos desde Cloud Storage.
Usa el fraccionamiento máximo 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 enumeran algunos problemas comunes y los pasos para resolverlos.
Transport endpoint is not connected en los Pods de carga de trabajo
Este error se debe a la finalización de dfuse. En la mayoría de los casos, dfuse finalizó debido a la falta de memoria. Usa las anotaciones de Pod gke-parallelstore/[cpu-limit|memory-limit] para asignar más recursos al contenedor 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 sidecar. Debes establecer de forma explícita un límite de recursos más grande para el contenedor sidecar.
Una vez que hayas modificado las anotaciones, debes reiniciar el Pod de carga de trabajo. Si agregas anotaciones a una carga de trabajo en ejecución, no se modifica de forma dinámica la asignación de recursos.
Advertencias de eventos de Pods
Si no se pueden iniciar los Pods de carga de trabajo, verifica los eventos de Pods:
kubectl describe pod POD_NAME -n NAMESPACE
Las siguientes soluciones son para errores comunes.
Problemas de habilitación del controlador de CSI
Los errores comunes de habilitación del controlador de CSI son los siguientes:
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, 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 montaje si se usa el montaje de nodo.
Esto sucede en el controlador y requiere el paso AttachVolume de attachdetach-controller.
| Código de error | Advertencia de evento de Pod | Solución |
| InvalidArgument |
|
Se pasan marcas de montaje no válidas a PersistentVolume o StorageClass. Consulta las opciones de montaje de dfuse compatibles para obtener más detalles. |
| NotFound |
|
La instancia de Parallelstore no existe. Verifica que el volumeHandle de PersistentVolume tenga el formato correcto. |
Errores de MountVolume.MountDevice
Después de que el volumen se adjunte a un nodo, se preparará para el 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 |
|
Por lo general, este error se debe a que el pod de montaje se borró de forma manual. Borra todas las cargas de trabajo que consumen el PVC y vuelve a implementarlas. Esto creará un nuevo Pod de montaje. |
| DeadlineExceeded |
|
Hay problemas para conectarse a la instancia de Parallelstore. Verifica que tu red de VPC y tus puntos de acceso estén configurados correctamente. |
Errores de MountVolume.SetUp
Después de que el volumen se prepare para el nodo, se activará y se proporcionará al contenedor en el Pod. Esto sucede en el nodo y requiere el paso MountVolume.SetUp de kubelet.
Montaje de Pod
| Código de error | Advertencia de evento de Pod | Solución |
| ResourceExhausted |
|
Finalizó el proceso de dfuse, que suele deberse a una
condición de falta de memoria (OOM). Considera aumentar el límite de memoria del contenedor sidecar con la
gke-parallelstore/memory-limit anotación.
Si no estás seguro de la cantidad de memoria que deseas asignar a
parallelstore-sidecar, te recomendamos que configures
|
| Anulado |
|
Se anuló la operación de montaje de volumen debido a la 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 PersistentVolume, el registro de errores indica los campos con los argumentos no válidos. Para el aprovisionamiento dinámico, verifica la clase de almacenamiento. Para el aprovisionamiento estático, verifica 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 sidecar de Parallelstore. Verifica que la
gke-parallelstore/volumes: "true" anotación de Pod esté configurada correctamente.
|
Montaje de nodo
| Código de error | Advertencia de evento de Pod | Solución |
| Anulado |
|
Se anuló la operación de montaje de volumen debido a la limitación 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 PersistentVolume, el registro de errores indica los campos con los argumentos no válidos. Para el aprovisionamiento dinámico, verifica la clase de almacenamiento. Para el aprovisionamiento estático, verifica el volumen persistente. |
| FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = mounter pod expected to exist but was not found
|
El pod de montaje de Parallelstore no existe. Si el Pod de montaje se borró por accidente, vuelve a crear todas las cargas de trabajo para solicitar 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. |
Solución de problemas de redes de VPC
Se denegó el permiso para agregar el intercambio de tráfico para el 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.networkAdminoroles/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 intercambio de tráfico 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:
Recupera la lista de rangos de IP existentes para el intercambio de tráfico:
EXISTING_RANGES=$( gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --format="value(reservedPeeringRanges.list())" )Luego, agrega el nuevo rango al intercambio de tráfico:
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.
Mantenimiento bloqueado debido a un presupuesto de interrupción de Pods restrictivo
Es posible que la Google Cloud consola muestre el siguiente mensaje de error que indica que no se puede continuar con el mantenimiento porque un presupuesto de interrupción de Pods (PDB) está 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 completando los siguientes pasos:
Haz clic en el mensaje de error para abrir el panel de información sobre el error.
Consulta la sección Presupuestos de interrupción de Pods no permisivos para ver el nombre del Pod.
Si el Pod es
parallelstorecsi-mount, puedes ignorar este error, ya que no impedirá el mantenimiento. Para cualquier otro Pod, examina tu PDB.