Solucionar problemas de agentes de servicio de Kf

Sigue estos pasos para solucionar varios problemas que pueden producirse al usar Kf ServiceBrokers.

El objeto no se elimina

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, comprueba si se debe a alguna de las causas que se indican a continuación:

kubectl get servicebrokers.kf.dev -n SPACE_NAME SERVICEBROKER_NAME -o yaml

La CLI de kf puede ayudarte a comprobar algunos de los problemas:

kf doctor --space SPACE_NAME servicebroker/SERVICEBROKER_NAME
Causa posibleSolución
La marca de tiempo de eliminación es futura.

Con la desviación del reloj, el metadata.deletionTimestamp puede que siga siendo posterior a la hora actual. Espera unos minutos para ver si se elimina el objeto.

Hay finalizadores en el objeto.

Los finalizadores están presentes en el objeto y el controlador que los ha definido debe eliminarlos antes de que se elimine el objeto.

Si quieres forzar la eliminación sin esperar a los finalizadores, edita el objeto para quitarlos de la matriz metadata.finalizers.

Advertencia: Si quitas finalizadores sin permitir que los controladores se completen, pueden producirse errores, problemas de seguridad, pérdida de datos o recursos huérfanos.

Puede haber objetos dependientes.

Es posible que el objeto esté esperando a que se eliminen los elementos dependientes antes de eliminarse. Consulta la guía de recolección de elementos no utilizados de Kubernetes para obtener más información. Pide a un administrador que compruebe todos los objetos del espacio de nombres y del clúster para ver si alguno de ellos impide la eliminación.

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

Desviación del estado de generación de objetos

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, comprueba si se debe a alguna de las causas que se indican a continuación:

kubectl get servicebrokers.kf.dev -n SPACE_NAME SERVICEBROKER_NAME -o yaml

La CLI de kf puede ayudarte a comprobar algunos de los problemas:

kf doctor --space SPACE_NAME servicebroker/SERVICEBROKER_NAME
Causa posibleSolución
El objeto tiene una diferencia en la versión de generación.

Este error suele producirse cuando el controlador Kf no ha leído la última versión del objeto. Normalmente, se corrige solo cuando las réplicas de Kubernetes alcanzan la coherencia final y no suele requerir ninguna acción por parte de los usuarios.

No se ha podido conciliar el objeto

Ejecuta el siguiente comando para obtener la información del recurso y, a continuación, comprueba si se debe a alguna de las causas que se indican a continuación:

kubectl get servicebrokers.kf.dev -n SPACE_NAME SERVICEBROKER_NAME -o yaml

La CLI de kf puede ayudarte a comprobar algunos de los problemas:

kf doctor --space SPACE_NAME servicebroker/SERVICEBROKER_NAME
Causa posibleSolución
Object has TemplateError

Este error suele producirse si el usuario ha introducido una propiedad no válida en el recurso personalizado Spec o si la configuración del espacio o del clúster es incorrecta.

Para conocer la causa principal, el usuario puede leer el mensaje de error más largo en el objeto status.conditions 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 nombres)

Este error suele indicar que los objetos que el controlador intenta crear ya existen. Esto ocurre si el usuario ha creado un recurso de K8s que tiene el mismo nombre que el que intenta crear el controlador, pero suele ocurrir más a menudo si el usuario elimina un recurso y el controlador de Kf intenta volver a crearlo. Si un recurso secundario sigue activo, su propietario será el recurso antiguo que ya no existe.

Para recuperarse del error, se recomienda que el usuario elimine el recurso afectado y, a continuación, lo vuelva a crear. Para eliminar 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 de Kf. Por ejemplo: kf create-space my-space.

Object has ReconciliationError

Este error suele indicar que se ha producido un problema con la llamada HTTP realizada (por el controlador de Kf) al servidor de la API de Kubernetes para crear o actualizar un recurso.

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