Solución de problemas
Usa los consejos que se ofrecen aquí para solucionar los problemas que puedas encontrar al instalar y usar Trident.
|
|
Si necesitas ayuda con Trident, crea un paquete de soporte usando tridentctl logs -a -n trident y envíalo a NetApp Support.
|
Solución de problemas general
-
Si el pod Trident no se pone en marcha correctamente (por ejemplo, cuando el pod Trident está atascado en la fase
ContainerCreatingcon menos de dos contenedores listos), ejecutarkubectl -n trident describe deployment tridentykubectl -n trident describe pod trident--**puede darte información adicional. Obtener registros de kubelet (por ejemplo, usandojournalctl -xeu kubelet) también puede ser útil. -
Si no hay suficiente información en los registros de Trident, puedes intentar habilitar el modo de depuración para Trident pasando la bandera
-dal parámetro de instalación según tu opción de instalación.Luego confirma que la depuración está configurada usando
./tridentctl logs -n tridenty buscandolevel=debug msgen el registro.- Instalado con Operator
-
kubectl patch torc trident -n <namespace> --type=merge -p '{"spec":{"debug":true}}'Esto reiniciará todos los pods Trident, lo que puede tardar varios segundos. Puedes comprobarlo observando la columna 'AGE' en la salida de
kubectl get pod -n trident.Para Trident 20.07 y 20.10 usa
tproven lugar detorc. - Instalado con Helm
-
helm upgrade <name> trident-operator-21.07.1-custom.tgz --set tridentDebug=true`
- Instalado con tridentctl
-
./tridentctl uninstall -n trident ./tridentctl install -d -n trident
-
También puedes obtener registros de depuración para cada backend incluyendo
debugTraceFlagsen la definición de tu backend. Por ejemplo, incluyedebugTraceFlags: {"api":true, "method":true,}para obtener llamadas a la API y recorridos de métodos en los registros de Trident. Los backends existentes pueden tenerdebugTraceFlagsconfigurado con untridentctl backend update. -
Cuando uses Red Hat Enterprise Linux CoreOS (RHCOS), asegúrate de que
iscsidesté habilitado en los nodos trabajadores y se inicie por defecto. Esto se puede hacer usando OpenShift MachineConfigs o modificando las plantillas de ignition. -
Un problema común que podrías encontrar al usar Trident con "Azure NetApp Files" es cuando los secretos de tenant y client vienen de un registro de app con permisos insuficientes. Para ver una lista completa de los requisitos de Trident, consulta "Azure NetApp Files" configuration.
-
Si tienes problemas al montar un PV en un contenedor, asegúrate de que
rpcbindestá instalado y en ejecución. Usa el gestor de paquetes necesario para el sistema operativo anfitrión y revisa sirpcbindestá en ejecución. Puedes comprobar el estado del serviciorpcbindejecutando unsystemctl status rpcbindo su equivalente. -
Si un backend Trident informa que está en el estado
faileda pesar de haber funcionado antes, probablemente se deba a que se cambiaron las credenciales SVM/admin asociadas con el backend. Actualizar la información del backend usandotridentctl update backendo reiniciar el pod de Trident solucionará este problema. -
Si tienes problemas de permisos al instalar Trident con Docker como el runtime del contenedor, intenta instalar Trident con la opción
--in cluster=false. Esto no usará un pod de instalación y evitará los problemas de permisos que se ven por el usuariotrident-installer. -
Usa
uninstall parameter <Uninstalling Trident>para limpiar después de una ejecución fallida. Por defecto, el script no elimina los CRDs que ha creado Trident, así que es seguro desinstalar e instalar de nuevo incluso en un despliegue en ejecución. -
Si quieres bajar a una versión anterior de Trident, primero ejecuta el comando
tridentctl uninstallpara eliminar Trident. Descarga el "Versión de Trident" que quieras e instálalo usando el comandotridentctl install. -
Después de una instalación correcta, si un PVC está atascado en la
Pendingfase, ejecutarkubectl describe pvcpuede darte información adicional sobre por qué Trident no pudo aprovisionar un PV para este PVC.
Despliegue fallido de Trident usando el operador
Si estás desplegando Trident usando el operador, el estado de TridentOrchestrator cambia de Installing a Installed. Si ves el estado Failed y el operador no puede recuperarse solo, deberías revisar los registros del operador ejecutando el siguiente comando:
tridentctl logs -l trident-operator
El rastreo de los registros del contenedor trident-operator puede señalar dónde se encuentra el problema. Por ejemplo, uno de estos problemas podría ser la incapacidad para extraer las imágenes de contenedor requeridas de los registros upstream en un entorno airgapped.
Para entender por qué la instalación de Trident no tuvo éxito, deberías echar un vistazo al TridentOrchestrator estado.
kubectl describe torc trident-2
Name: trident-2
Namespace:
Labels: <none>
Annotations: <none>
API Version: trident.netapp.io/v1
Kind: TridentOrchestrator
...
Status:
Current Installation Params:
IPv6:
Autosupport Hostname:
Autosupport Image:
Autosupport Proxy:
Autosupport Serial Number:
Debug:
Image Pull Secrets: <nil>
Image Registry:
k8sTimeout:
Kubelet Dir:
Log Format:
Silence Autosupport:
Trident Image:
Message: Trident is bound to another CR 'trident'
Namespace: trident-2
Status: Error
Version:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Error 16s (x2 over 16s) trident-operator.netapp.io Trident is bound to another CR 'trident'
Este error indica que ya existe un TridentOrchestrator que se utilizó para instalar Trident. Dado que cada clúster de Kubernetes solo puede tener una instancia de Trident, el operador se asegura de que en un momento dado solo exista un TridentOrchestrator activo que pueda crear.
Además, observar el estado de los pods de Trident puede indicar a menudo si algo no va bien.
kubectl get pods -n trident NAME READY STATUS RESTARTS AGE trident-csi-4p5kq 1/2 ImagePullBackOff 0 5m18s trident-csi-6f45bfd8b6-vfrkw 4/5 ImagePullBackOff 0 5m19s trident-csi-9q5xc 1/2 ImagePullBackOff 0 5m18s trident-csi-9v95z 1/2 ImagePullBackOff 0 5m18s trident-operator-766f7b8658-ldzsv 1/1 Running 0 8m17s
Puedes ver claramente que los pods no pueden inicializarse completamente porque una o más imágenes de contenedor no se obtuvieron.
Para solucionar el problema, debes editar el TridentOrchestrator CR. O también puedes eliminar TridentOrchestrator y crear uno nuevo con la definición modificada y precisa.
Despliegue fallido de Trident usando tridentctl
Para averiguar qué salió mal, puedes volver a ejecutar el instalador usando el argumento -d, lo que activará el modo de depuración y te ayudará a entender cuál es el problema:
./tridentctl install -n trident -d
Después de solucionar el problema, puedes limpiar la instalación de la siguiente manera y luego ejecutar de nuevo el comando tridentctl install:
./tridentctl uninstall -n trident INFO Deleted Trident deployment. INFO Deleted cluster role binding. INFO Deleted cluster role. INFO Deleted service account. INFO Removed Trident user from security context constraint. INFO Trident uninstallation succeeded.
Eliminar por completo Trident y CRDs
Puedes eliminar por completo Trident y todos los CRD creados y los recursos personalizados asociados.
|
|
Esto no se puede deshacer. No hagas esto a menos que quieras una instalación completamente nueva de Trident. Para desinstalar Trident sin eliminar los CRD, consulta "Desinstala Trident". |
Para desinstalar Trident y eliminar por completo los CRDs usando el operador Trident:
kubectl patch torc <trident-orchestrator-name> --type=merge -p '{"spec":{"wipeout":["crds"],"uninstall":true}}'
Para desinstalar Trident y eliminar completamente los CRDs usando Helm:
kubectl patch torc trident --type=merge -p '{"spec":{"wipeout":["crds"],"uninstall":true}}'
Para eliminar completamente los CRD después de desinstalar Trident usando tridentctl
tridentctl obliviate crd
Fallo de desagrupación de nodo NVMe con espacios de nombres de bloque sin procesar RWX o Kubernetes 1.26
Si estás ejecutando Kubernetes 1.26, puede fallar la desagrupación del nodo al usar NVMe/TCP con namespaces de bloque sin procesar RWX. Los siguientes escenarios ofrecen una solución para el fallo. O también puedes actualizar Kubernetes a 1.27.
Eliminé el espacio de nombres y el pod
Imagina un escenario donde tienes un espacio de nombres gestionado por Trident (volumen persistente NVMe) adjunto a un pod. Si eliminas el espacio de nombres directamente desde el backend de ONTAP, el proceso de unstaging se queda atascado después de que intentes eliminar el pod. Este escenario no afecta al clúster de Kubernetes ni a otras funciones.
Desmonta el volumen persistente (correspondiente a ese namespace) del nodo respectivo y elimínalo.
DataLIFs bloqueados
If you block (or bring down) all the dataLIFs of the NVMe Trident backend, the unstaging process gets stuck when you attempt to delete the pod. In this scenario, you cannot run any NVMe CLI commands on the Kubernetes node. .Solución alternativa Levanta los dataLIFS para restaurar la funcionalidad completa.
Asignación de namespace eliminada
If you remove the `hostNQN` of the worker node from the corresponding subsystem, the unstaging process gets stuck when you attempt to delete the pod. In this scenario, you cannot run any NVMe CLI commands on the Kubernetes node. .Solución alternativa Agrega el `hostNQN` de nuevo al subsistema.
Los clientes de NFSv4.2 informan "argumento no válido" después de actualizar ONTAP cuando esperaban que "v4.2-xattrs" estuviera activado
Después de actualizar ONTAP, los clientes NFSv4.2 pueden mostrar errores de "argumento no válido" al intentar montar exportaciones NFSv4.2. Este problema ocurre cuando la opción v4.2-xattrs no está habilitada en la SVM. Solución: habilita la opción v4.2-xattrs en la SVM o actualiza a ONTAP 9.12.1 o una versión posterior, donde esta opción ya viene habilitada por defecto.