Fehlerbehebung bei Kf

Führen Sie die folgenden Schritte aus, um verschiedene Probleme zu beheben, die bei der Ausführung von Kf auftreten können.

Fehler bei der Installation von Kf

Error from server (Bad Request): Invalid character

Wenn dieser Fehler beim Festlegen der Standardeinstellungen für die Konfiguration angezeigt wird, enthält der Wert der im Befehl verwendete Umgebungsvariablen ${DOMAIN} wahrscheinlich das Escapezeichen „$“. Verwenden Sie einfache Anführungszeichen, um eine Domain mit einem Bereichsnamen oder einer anderen Ersetzung zu definieren:

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

Fehler mit Kubernetes-Objekten

Folgen Sie dieser Anleitung, um Probleme mit Kf Kubernetes-Objekten zu beheben.

  1. Suchen Sie nach dem Namen des Kubernetes-Ressourcentyps, den Sie beheben möchten. Listen Sie dazu alle Kf-Ressourcen auf:

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

    Beispielausgabe:

    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. Rufen Sie die Instanz der Ressource, für die Sie Fehler beheben möchten, mit kubectl ab. Wenn sich das Objekt nicht in einem Namespace befindet, lassen Sie das Flag -n weg:

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

    Beispiel:

    kubectl get apps.kf.dev my-app -n my-space -o yaml
    
  3. Wählen Sie Ihr Problem aus den Tabs unten aus:

    Objekt wird nicht abgeglichen

    1. Prüfen Sie den Wert von metadata.generation. Diese Nummer wird bei jeder Aktualisierung des Objekts erhöht. Wenn die Zahl extrem hoch ist, haben zwei Kubernetes-Controller wahrscheinlich das Objekt. Prüfen Sie, ob in Ihrem Cluster Richtlinien zum Objekt angewendet werden, die es vom gewünschten Status ändern könnten.
    2. Prüfen Sie, ob der Namespace, zu dem das Objekt gehört, gelöscht wird. Ist dies der Fall, kann das Objekt nicht abgeglichen werden.
    3. Prüfen Sie, ob das Feld status.observedGeneration vorhanden ist. Ist dies nicht der Fall, wurde der Controller möglicherweise noch nicht für das Objekt ausgeführt. Prüfen Sie mit kf doctor, ob der Cluster und die Controller fehlerfrei sind.
    4. Prüfen Sie, ob das Feld metadata.generation mit dem Feld status.observedGeneration übereinstimmt. Falls nicht, prüfen Sie, ob der Cluster und die Controller fehlerfrei sind. Verwenden Sie dazu kf doctor.
    5. Suchen Sie in der status.conditions-Liste nach Fehlern in der Liste der häufigsten Fehlerursachen:
    • NotOwned: Im Cluster oder Namespace gibt es eine andere Ressource, mit der dieses Objekt erstellt wird. Lesen Sie die Nachricht, um den doppelten Namen zu ermitteln, und benennen Sie entweder die in Konflikt stehende Ressource oder das Kf-Objekt.
    • TemplateError: Es liegt eine Fehlkonfiguration in der Kf-Ressourcenspezifikation oder Kf-Konfiguration vor, die dazu führt, dass die untergeordnete Ressource nicht korrekt abgeglichen wird. Überprüfen Sie die Einstellungen des Kf-Objekts und des Kf-Speicherplatzes.
    • CacheOutdated: Der Kf-Controller erhält Aktualisierungen von Kubernetes nicht schnell genug. Integrität des Kubernetes-Clusters überprüfen.
    • ReconciliationError: Der Kf-Controller kann die erforderliche untergeordnete Ressource nicht erstellen. Prüfen Sie, ob Ihr Cluster fehlerfrei ist, Kf ausgeführt wird und dass keine Richtlinien erzwungen werden, die verhindern, dass Kf das in der Nachricht referenzierte Objekt erstellt.

    Objekt wird nicht gelöscht

    1. Prüfen Sie, ob der metadata.deletionTimestamp des Objekts festgelegt wurde. Wenn es nicht festgelegt wurde, funktioniert der angeforderte Löschvorgang nicht.
    2. Prüfen Sie, ob der metadata.deletionTimestamp des Objekts in der Vergangenheit liegt. Wenn er in Zukunft liegt, wird das Objekt möglicherweise nicht gelöscht.
    3. Prüfen Sie, ob eine metadata.finalizers-Liste für das Objekt vorhanden ist. Wenn Finalizer vorhanden sind, muss das Objekt warten, bis sie entfernt werden, bevor es gelöscht wird. Wenn Sie ein Löschen erzwingen möchten, ohne auf die Finalizer zu warten, bearbeiten Sie das Objekt, um sie zu entfernen.
    4. Unter Umständen sind untergeordnete Objekte vorhanden, die das Löschen des Objekts verhindern. Lassen Sie einen Administrator alle Objekte im Namespace und Cluster prüfen, um festzustellen, ob eines davon zuerst manuell gelöscht werden muss.