Trident: No se pueden separar volúmenes adjuntos a nodos eliminados

Creado en 14 ene. 2022  ·  4Comentarios  ·  Fuente: NetApp/trident

Describa el error

No podemos separar volúmenes adjuntos a nodos eliminados en Trident 21.10.1. En Trident v21.07.2, estos volúmenes se separarían automáticamente después de un período determinado. Si entiendo correctamente, esta separación forzada la realiza AttachDetachController después de ReconcilerMaxWaitForUnmountDuration .

Parece que este cambio se introduce en este compromiso . Esta confirmación hace que ControllerUnpublishVolume de Trident verifique la existencia del nodo. Si el nodo no existe, ControllerUnpublishVolume ahora devuelve un error NotFound , por lo que la separación del volumen siempre falla cuando el nodo ya se eliminó.

En caso de falla del servidor, la desconexión del volumen puede fallar y no tenemos más remedio que eliminar el nodo, por lo que es deseable desconectar los volúmenes adjuntos a los nodos eliminados automáticamente.

Ambiente

  • Tridente versión: 21.10.1
  • Indicadores de instalación Trident utilizados: silenceAutosupport: true (Operador Trident)
  • Tiempo de ejecución del contenedor: Docker 20.10.11
  • Versión de Kubernetes: 1.22.5
  • Orquestador de Kubernetes: Kubernetes
  • Puertas de características habilitadas para Kubernetes:
  • SO: Ubuntu 20.04.3 LTS
  • Tipos de back-end de NetApp: ONTAP AFF 9.7P13
  • Otro:

Reproducir

  • Cree un StatefulSet que tenga un volumen ontap-san
  • Elimine el objeto de nodo en el que está programado el Pod por kubectl delete node
  • El controlador StatefulSet recrea un nuevo Pod en otro nodo después de un corto tiempo
  • El Pod recreado no se puede adjuntar al volumen incluso después de 1 hora

    • Con Trident v21.07.2, el Pod se ejecutará después de 6 a 8 minutos

En VolumeAttachment, se puede encontrar el siguiente error.

rpc error: code = NotFound desc = node <NODE_NAME> was not found'

Comportamiento esperado

Trident separa automáticamente los volúmenes adjuntos a los nodos eliminados.

bug tracked

Comentario más útil

@paalkr , el equipo está trabajando actualmente en una solución. Actualizaremos este problema con un enlace a la confirmación una vez que se fusione.

Todos 4 comentarios

Ejecutamos un clúster de Kubernetes de más de 100 nodos en AWS que depende en gran medida de los nodos puntuales. Los nodos puntuales se cancelarán con solo unos minutos de advertencia en AWS, lo que se espera que suceda con bastante frecuencia. Incluso si ejecutamos el controlador de terminación de nodos en modo SQS y reaccionamos a las notificaciones de terminación de puntos con drenaje automático de nodos, generalmente terminamos en una situación en la que el proceso de separación no finaliza antes de que se elimine un nodo.

En este escenario, a menudo encontramos exactamente el mismo problema descrito por @tksm. Este es un problema grave, ya que las cargas de trabajo se atascarán en un estado de bloqueo debido a que el PVC no se conecta después de que el pod se mueva a un nuevo nodo. Espero que el problema se pueda solucionar.

Cualquier ETA en una solución?

@paalkr , el equipo está trabajando actualmente en una solución. Actualizaremos este problema con un enlace a la confirmación una vez que se fusione.

Excelente! Muchas gracias.

¿Fue útil esta página
0 / 5 - 0 calificaciones