Solucionar problemas de Kf

Sigue estos pasos para solucionar los distintos problemas que pueden ocurrir cuando ejecutas Kf.

Errores cuando se instala Kf

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

Si ves este error cuando configuras los valores predeterminados de configuración, es probable que el valor de la variable de entorno ${DOMAIN} que se usa en el comando incluya "$" de escape. Usa comillas simples para definir un dominio con un nombre de espacio o alguna 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 de los objetos de Kubernetes de Kf.

  1. Busca el nombre del tipo de recurso de Kubernetes que deseas solucionar mediante la enumeración de todos los recursos de Kf:

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

    Resultado de 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 con el que deseas solucionar problemas mediante 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 siguientes pestañas:

    El objeto no se concilia

    1. Comprueba el valor de metadata.generation. Este número aumenta cada vez que se actualiza el objeto. Si el número es extremadamente alto, es probable que dos controladores de Kubernetes se disputen el objeto. Verifica tu clúster para ver si se está aplicando alguna política al objeto que podría cambiar el estado deseado.
    2. Verifica si se borra 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 existe, es posible que el controlador aún no se haya ejecutado en el objeto. Verifica que el clúster y los controladores estén en buen estado mediante kf doctor.
    4. Verifica 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 mediante kf doctor.
    5. Verifica si hay fallas en la lista status.conditions en función de esta lista de motivos de error comunes:

      • NotOwned: Hay otro recurso que existe en el clúster o el espacio de nombres como el que este objeto intenta crear. Lee el mensaje para encontrar el nombre duplicado y cambiar el nombre del recurso en conflicto o el objeto Kf.
      • TemplateError: Hay una configuración incorrecta en la especificación de recursos Kf o la configuración Kf, lo que hace que el recurso secundario se concilie de forma incorrecta. Valida la configuración del objeto Kf y el espacio de Kf.
      • CacheOutdated: El controlador Kf no recibe actualizaciones de Kubernetes lo suficientemente rápido. Comprueba el estado del clúster de Kubernetes.
      • ReconciliationError: El controlador de Kf no puede crear el recurso secundario necesario. Verifica que tu clúster esté en buen estado, que Kf se está ejecutando y que no haya ninguna política que impida que Kf cree el objeto al que se hace referencia en el mensaje.

    El objeto no se borra

    1. Comprueba que se configuró el metadata.deletionTimestamp del objeto. Si no se configuró, la eliminación solicitada no funcionó.
    2. Comprueba que el metadata.deletionTimestamp del objeto esté en el pasado. Si está en el futuro, es posible que el objeto no se borre.
    3. Comprueba si existe una lista metadata.finalizers en el objeto. Si los finalizadores están presentes, el objeto debe esperar a que se quiten antes de que se borre. Si deseas forzar una eliminación sin esperar a los finalizadores, edita el objeto para quitarlos.
    4. Pueden existir objetos secundarios que impidan que se borre el objeto. Pídele a un administrador que revise todos los objetos en el espacio de nombres y el clúster para comprobar si alguno se debe borrar de forma manual primero.