Soluciona problemas de Kf ServiceInstances

Utiliza estos pasos para solucionar los distintos problemas que pueden ocurrir cuando se usa Kf ServiceInstances.

El objeto se atascó durante la eliminación.

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, verifica las causas enumeradas a continuación:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

La CLI de kf puede ayudar a verificar algunos de los problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Causa posibleSolución
La marca de tiempo de eliminación se centra en el futuro.

Con el sesgo de reloj, el metadata.deletionTimestamp puede seguir centrado en el futuro. Espera unos minutos para ver si se borra el objeto.

Los finalizadores existen en el objeto.

Los finalizadores están presentes en el objeto, y el controlador que los configura debe quitarlos antes de que se borre el objeto.

Si deseas forzar la eliminación sin esperar a los finalizadores, edita el objeto para quitarlos del array metadata.finalizers.

Advertencia: Quitar los finalizadores sin permitir que se completen los controladores puede causar errores, problemas de seguridad, pérdida de datos o recursos huérfanos.

Pueden existir objetos dependientes.

Es posible que el objeto esté a la espera de que se borren los dependientes antes de que se lo borre. Consulta la guía de recolección de elementos no utilizados de Kubernetes para obtener más información. Haz que un administrador verifique todos los objetos en el espacio de nombres y el clúster para ver si uno de ellos está bloqueando la eliminación.

Si necesitas quitar el objeto sin esperar a los dependientes, usa kubectl delete con la marca de cascada establecida en: --cascade=orphan.

Desvío del estado de generación del objeto.

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, verifica las causas enumeradas a continuación:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

La CLI de kf puede ayudar a verificar algunos de los problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Causa posibleSolución
El objeto tiene un desvío en la generación de la versión.

Por lo general, este error ocurre cuando el controlador Kf no leyó la versión más reciente del objeto. Este error suele recuperarse una vez que las réplicas de Kubernetes alcanzan la coherencia eventual y, por lo general, no requiere acciones de los usuarios.

No se pudo conciliar el objeto.

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, verifica las causas enumeradas a continuación:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

La CLI de kf puede ayudar a verificar algunos de los problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Causa posibleSolución
El objeto tiene TemplateError

Por lo general, este error ocurre si el usuario ingresó una propiedad no válida en la especificación de recurso personalizado o si la configuración del espacio o clúster es incorrecta.

Para comprender la causa raíz, el usuario puede leer el mensaje de error más largo en el status.conditions del objeto con el comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por ejemplo: kubectl describe serviceinstance my-service -n my-space.

El objeto tiene un error ChildNotowned (conflictos de nombre)

Por lo general, este error significa que los objetos que el controlador intenta crear ya existen. Esto sucede si el usuario creó un recurso K8s que tiene el mismo nombre que el que el controlador intenta crear, pero es más frecuente si borra un recurso y, luego, el controlador Kf intenta volver a crearlo. Si un recurso secundario aún se encuentra en espera, su propietario será el recurso anterior que ya no existe.

Para solucionar el error, se recomienda que el usuario borre el recurso afectado y lo vuelva a crear. Para borrar el objeto, usa un comando de eliminación de Kf o el comando kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE. Por ejemplo, kf delete-space my-space o kubectl delete space my-space.

Para volver a crear un recurso, usa un comando Kf. Por ejemplo: kf create-space my-space.

El objeto tiene ReconciliationError

Por lo general, este error significa que se produjo un error con la llamada HTTP que realizó el controlador Kf al servicio de la API de Kubernetes para crear o actualizar el recurso.

Para comprender la causa raíz, el usuario puede leer el mensaje de error más largo en el status.conditions del objeto con el comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por ejemplo: kubectl describe serviceinstance my-service -n my-space.

No se pudo respaldar la conciliación de recursos.

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, verifica las causas enumeradas a continuación:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

La CLI de kf puede ayudar a verificar algunos de los problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Causa posibleSolución
Error DeprovisionFailed en el recurso de copia de seguridad.

Por lo general, este error ocurre cuando no se pudieron desaprovisionar los recursos de copia de seguridad (base de datos MySQL alojada en un servidor de OSB externo). Kf no puede determinar de forma segura si el recurso dependiente está desaprovisionado.

A fin de recuperarse del error, se recomienda que el usuario lea el mensaje de error detallado en el status.conditions del objeto con el comando kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por ejemplo: kubectl describe servipropogatesceinstance my-service -n my-space.

Una vez que se confirme el mensaje de error, pídele a un administrador que revise el recurso de copia de seguridad y lo borre de forma manual. Una vez que se determina que el recurso de copia de seguridad se liberó de forma segura, el recurso Kf afectado se puede conciliar de forma correcta si quitas de forma manual el Finalizer de la especificación del objeto con el comando kubectl edit serviceinstance my-service -n my-space.