Résoudre les problèmes liés à Kf

Suivez cette procédure pour résoudre divers problèmes qui peuvent survenir lors de l'exécution de Kf.

Échecs lors de l'installation de Kf

Erreur du serveur (requête incorrecte) : caractère non valide

Si vous voyez ce message d'erreur lors de la définition des valeurs de configuration par défaut, il est probable que la valeur de la variable d'environnement ${DOMAIN} utilisée dans la commande inclut un '$' échappé. Utilisez des guillemets simples pour définir un domaine avec un nom d'espace ou une autre substitution :

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

Erreurs avec des objets Kubernetes Kf

Suivez ces instructions pour résoudre les problèmes liés aux objets Kubernetes Kf.

  1. Recherchez le nom du type de ressource Kubernetes dont vous souhaitez résoudre les problèmes en répertoriant toutes les ressources Kf :

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

    Exemple de résultat :

    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. Obtenez l'instance de la ressource dont vous souhaitez résoudre les problèmes à l'aide de kubectl. Si l'objet ne se trouve pas dans un espace de noms, omettez l'option -n :

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

    Par exemple :

    kubectl get apps.kf.dev my-app -n my-space -o yaml
    
  3. Sélectionnez votre problème dans les onglets ci-dessous :

    L'objet n'est pas en cours de rapprochement

    1. Vérifiez la valeur de metadata.generation. Ce nombre est incrémenté à chaque mise à jour de l'objet. Si le nombre est extrêmement élevé, il est probable que deux contrôleurs Kubernetes soient en conflit sur l'objet. Vérifiez votre cluster pour déterminer si des règles sont appliquées à l'objet afin qu'il passe à l'état souhaité.
    2. Vérifiez si l'espace de noms auquel l'objet appartient est en cours de suppression. Si c'est le cas, l'objet risque de ne pas être rapproché.
    3. Vérifiez que le champ status.observedGeneration existe. S'il n'existe pas, il se peut que le contrôleur n'ait pas encore été exécuté sur l'objet. Vérifiez que le cluster et les contrôleurs sont opérationnels à l'aide de kf doctor.
    4. Vérifiez que le champ metadata.generation correspond au champ status.observedGeneration. Si ce n'est pas le cas, vérifiez que le cluster et les contrôleurs sont opérationnels à l'aide de kf doctor.
    5. Recherchez les échecs dans la liste status.conditions par rapport à la liste des motifs d'erreurs fréquentes suivante :
    • NotOwned : Il existe une autre ressource dans le cluster ou l'espace de noms identique à celle que cet objet tente de créer. Lisez le message pour trouver le nom en double, et renommez la ressource en conflit ou l'objet Kf.
    • TemplateError : La spécification de la ressource Kf ou la configuration Kf comportent une erreur de configuration qui entraîne un rapprochement incorrect de la ressource enfant. Validez les paramètres de l'objet Kf et de l'espace Kf.
    • CacheOutdated : Le contrôleur Kf ne reçoit pas assez rapidement les mises à jour de Kubernetes. Vérifiez l'état du cluster Kubernetes.
    • ReconciliationError : Le contrôleur Kf ne peut pas créer la ressource enfant nécessaire. Assurez-vous que votre cluster est opérationnel, que Kf est en cours d'exécution et qu'aucune règle appliquée n'empêche Kf de créer l'objet référencé dans le message.

    L'objet n'est pas en cours de suppression

    1. Vérifiez que le champ metadata.deletionTimestamp de l'objet a été défini. Si ce n'est pas le cas, la suppression demandée n'a pas fonctionné.
    2. Vérifiez que la valeur metadata.deletionTimestamp de l'objet est antérieure au moment actuel. Si elle est postérieure, il est possible que l'objet ne puisse pas être supprimé.
    3. Vérifiez si une liste metadata.finalizers existe sur l'objet. Si des finaliseurs sont présents, l'objet doit attendre leur suppression avant d'être supprimé. Si vous souhaitez forcer la suppression sans attendre les finaliseurs, modifiez l'objet pour les supprimer.
    4. Il existe des objets enfants qui empêchent la suppression de l'objet. Demandez à un administrateur de vérifier tous les objets de l'espace de noms et du cluster pour déterminer si l'un d'entre eux doit d'abord être supprimé manuellement.