Describa el error
La implementación de trident-csi estaba fallando debido a
I1207 08:20:13.609384 1 connection.go:186] GRPC error: rpc error: code = FailedPrecondition desc = Trident initialization failed; error attempting to clean up snapshot snapshot-SOMEUUID from backend ontapnas.... : error reading volume size: flexvol trident_pvc_SOMEOTHERUUID not found
Por alguna razón, trident-csi estaba siguiendo referencias sobrantes a una instantánea en un backend de PVC que no admitía instantáneas.
La instantánea en sí ya no existía para ese PVC (es posible que se haya creado por error en kubernetes en el pasado [hace> 1 mes]). Incluso había borrado el PVC original. Pero el verdadero problema era que eliminar el objeto "volumensnapshot" para esa instantánea no parecía eliminar todas las demás referencias a él.
El backend era "ontap-nas-economy" ( https://netapp-trident.readthedocs.io/en/latest/kubernetes/operations/tasks/backends/ontap/drivers.html , el q-tree).
Parecía que CSI estaba tratando de ubicar una instantánea para un PV (qtree) aprovisionado en un backend 'económico', pero en realidad estaba verificando el volumen de pvc en el backend normal de ontap-nas. Que también está configurado como nuestro valor predeterminado. Sospecho que este problema ocurrió porque la clase de almacenamiento predeterminada era la económica cuando se creó la instantánea. Eso cambió más tarde para establecer el valor predeterminado en ontap-nas que admite backend, pero las referencias probablemente se rompieron o no se limpiaron correctamente en ese punto (?).
Esas otras referencias incluyen:
Eliminar las referencias pasadas soluciona el problema.
Estado inicial:
Hace algún tiempo, se creó un recurso de instantánea de volumen para un backend que no lo admitía. Eliminar esa instantánea de volumen no pareció eliminar las referencias a ella en otros objetos trident crd.
Lo que provocó el error:
Al reiniciar algunos nodos, se reinició el kubelet en uno de los nodos que tenía el archivo adjunto de volumen para la instantánea/pvc.
Ambiente
Turno abierto 4.6.*
Reproducir
Comportamiento esperado
Sin crashlooping en referencias TridentTransaction rotas.
Imprima una advertencia y continúe O limpie la referencia rota O agregue una bandera para activar/desactivar este comportamiento.
La solución consiste en eliminar las transacciones de trident manualmente y reiniciar los pods de trident. esto sigue siendo un error que debe abordarse.
Pasos para la solución a continuación
Compruebe las entradas en el CRD de tridenttransactions.
# oc obtener transacción tridente -n tridente
# oc obtener tridenttransaction -n trident -o json
[ corona@stablrebco2 ~]$ oc obtener ttx -n tridente
NOMBRE EDAD
pvc-63836175-1515-4326-b73f-cae3e0963be7-instantánea-0462e2ea-f167-4846-86a3-10cc6599b4a8 8d
3) Eliminar las entradas presentes en el CRD tridenttransaction.
Antes de eliminar la entrada de CRD de tridenttransaction, es posible que deba editar la entrada de recursos de CRD y eliminar los finalizadores (trident.netapp.io)
Para editar el CRD, use un editor vi: (Recuerde guardar el cambio)
Elimine la línea debajo de los finalizadores que contienen la entrada "trident.netapp.io".
4) Para eliminar el CRD de tridenttransaction.
Confirme que se ha eliminado la transacción trident.
5) Después de esto, las cápsulas Trident deberían aparecer y estar en estado de ejecución. De lo contrario, elimine el pod tridente principal (el pod con el nombre de pod más largo).
Esto debería generar un nuevo pod tridente que intentará inicializarse nuevamente y debería inicializarse con éxito porque no hay transacciones obsoletas que manejar durante la inicialización.
¿Habrá un lanzamiento de parche para corregir el error?
Hola @promothp ,
Este error, junto con todos los demás errores, se evalúa en función de la gravedad y se prioriza para corregirlo en consecuencia. Si es posible, se incluiría una corrección de errores para este problema en el lanzamiento de Trident v21.01 a fines de enero.
¡Agregue mi voto para tener un parche más temprano que tarde!
Esta solución se incluye en la versión Trident v21.01 con la confirmación 0ce1aaf .