Solucionar problemas de Kf

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

Errores al instalar Kf

Error del servidor (solicitud incorrecta): carácter no válido

Si ves este error al definir los valores predeterminados de la configuración, es probable que el valor de la variable de entorno ${DOMAIN} que se usa en el comando incluya un carácter "$" de escape. Usa comillas simples para definir un dominio con un nombre de espacio u otra sustitución:

Error from server (BadRequest): invalid character '$' in string escape code

Errores con objetos de Kubernetes de Kf

Sigue estas instrucciones para solucionar problemas con objetos de Kubernetes de Kf.

  1. Busca el nombre del tipo de recurso de Kubernetes que quieras solucionar enumerando todos los recursos de Kf:

    kubectl api-resources --api-group=kf.dev

    Ejemplo:

    NAME                      SHORTNAMES   APIGROUP   NAMESPACED   KIND
    apps                                   kf.dev     true         App
    builds                                 kf.dev     true         Build
    clusterservicebrokers                  kf.dev     false        ClusterServiceBroker
    routes                                 kf.dev     true         Route
    servicebrokers                         kf.dev     true         ServiceBroker
    serviceinstancebindings                kf.dev     true         ServiceInstanceBinding
    serviceinstances                       kf.dev     true         ServiceInstance
    spaces                                 kf.dev     false        Space
    
  2. Obtén la instancia del recurso que quieras solucionar con kubectl. Si el objeto no está en un espacio de nombres, omite la marca -n:

    kubectl get api-resource-name.kf.dev object-name -n space-name -o yaml

    Por ejemplo:

    kubectl get apps.kf.dev my-app -n my-space -o yaml
    
  3. Selecciona tu problema en las pestañas que aparecen a continuación:

    El objeto no se reconcilia

    1. Comprueba el valor de metadata.generation. Este número se incrementa cada vez que se actualiza el objeto. Si el número es extremadamente alto, es probable que dos controladores de Kubernetes estén compitiendo por el objeto. Comprueba tu clúster para ver si se aplican políticas al objeto que puedan cambiarlo del estado deseado.
    2. Comprueba si se está eliminando el espacio de nombres al que pertenece el objeto. Si es así, es posible que el objeto no se concilie.
    3. Comprueba que el campo status.observedGeneration exista. Si no es así, es posible que el controlador aún no se haya ejecutado en el objeto. Valida que el clúster y los controladores estén en buen estado con kf doctor.
    4. Comprueba que el campo metadata.generation coincida con el campo status.observedGeneration. Si no es así, valida que el clúster y los controladores estén en buen estado con kf doctor.
    5. Comprueba si hay fallos en la lista status.conditions comparándola con esta lista de motivos de errores habituales:
    • NotOwned: hay otro recurso en el clúster o en el espacio de nombres que el objeto está intentando crear. Lee el mensaje para encontrar el nombre duplicado y cambia el nombre del recurso en conflicto o del objeto Kf.
    • TemplateError: Hay un error de configuración en la especificación de recursos de Kf o en la configuración de Kf que provoca que el recurso secundario se reconcilie de forma incorrecta. Valida los ajustes del objeto Kf y el espacio Kf.
    • CacheOutdated: El controlador de Kf no recibe actualizaciones de Kubernetes con la suficiente rapidez. Comprueba el estado del clúster de Kubernetes.
    • ReconciliationError: el controlador Kf no puede crear el recurso secundario necesario. Comprueba que tu clúster esté en buen estado, que Kf se esté ejecutando y que no se apliquen políticas que impidan que Kf cree el objeto al que se hace referencia en el mensaje.

    No se elimina el objeto

    1. Comprueba que se haya definido el metadata.deletionTimestamp del objeto. Si no se ha definido, la eliminación solicitada no ha funcionado.
    2. Comprueba que el metadata.deletionTimestamp del objeto sea anterior a la fecha actual. Si es en el futuro, es posible que el objeto no se elimine.
    3. Comprueba si hay una lista metadata.finalizers en el objeto. Si hay finalizadores, el objeto debe esperar a que se eliminen antes de eliminarse. Si quieres forzar la eliminación sin esperar a los finalizadores, edita el objeto para quitarlos.
    4. Puede que haya objetos secundarios que impidan que se elimine el objeto. Pide a un administrador que compruebe todos los objetos del espacio de nombres y del clúster para ver si es necesario eliminar alguno de ellos manualmente.