Wenn Sie einen TKGS-Cluster nicht bereitstellen können, überprüfen Sie diese Liste mit den häufigsten Fehlern und beheben Sie diese.
Überprüfen der Cluster-API-Protokolle
Wenn Sie keinen TKG-Cluster erstellen können, überprüfen Sie, ob CAPW/V funktioniert.
Der CAPW/V-Controller ist die infrastrukturspezifische Implementierung der Cluster-API. CAPW/V wird über Supervisor aktiviert. CAPW/V ist eine Komponente von TKG und kann den Lebenszyklus von TKG-Clustern verwalten.
CAPW/V ist für das Erstellen und Aktualisieren des VirtualNetwork verantwortlich. Nur wenn das virtuelle Netzwerk bereit ist, kann die Erstellung der Clusterknoten verschoben werden. Hat der Workflow zur Clustererstellung diese Phase bestanden?
CAPW/V ist für das Erstellen und Aktualisieren des VirtualMachineService verantwortlich. Wurde der VirtualMachineService erfolgreich erstellt? Wurde die externe IP-Adresse abgerufen? Hat der Workflow zur Clustererstellung diese Phase bestanden?
kubectl config use-context tkg-cluster-ns
kubectl get pods -n vmware-system-capw | grep capv-controller
kubectl logs -n vmware-system-capw -c manager capv-controller-manager-...
Fehler bei der Validierung der Clusterspezifikation
Gemäß der YAML-Spezifikation darf das Leerzeichen in einem Schlüsselnamen verwendet werden. Es handelt sich um eine Skalarzeichenfolge, die ein Leerzeichen enthält und keine Anführungszeichen erfordert.
Die TKGS-Validierung lässt jedoch die Verwendung des Leerzeichens in Schlüsselnamen nicht zu. In TKGS darf ein gültiger Schlüsselname nur aus alphanumerischen Zeichen, einem Bindestrich (z. B. key-name
), einem Unterstrich (z. B. KEY_NAME
) oder einem Punkt (z. B. key.name
) bestehen.
Wenn Sie das Leerzeichen in einem Schlüsselnamen in der Clusterspezifikation verwenden, wird der TKGS-Cluster nicht bereitgestellt. Im Protokoll „vmware-system-tkg-controller-manager“ wird folgende Fehlermeldung angezeigt.
Invalid value: \"Key Name\": a valid config key must consist of alphanumeric characters, '-', '_' or '.' (e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+')"
Entfernen Sie zum Beheben des Fehlers das Leerzeichen oder ersetzen Sie es durch ein unterstütztes Zeichen.
Fehler beim Anwenden der TKG-Cluster-YAML
- Clusternetzwerk ist nicht im richtigen Zustand
-
Informationen zum Workflow für die TKG-Cluster-Bereitstellung:
- CAPV erstellt ein VirtualNetwork-Objekt für jedes TKG-Clusternetzwerk.
- Wenn Supervisor mit NSX-Netzwerk konfiguriert ist, überwacht NCP VirtualNetwork-Objekte und erstellt einen NSX Tier-1-Router und ein NSX-Segment für jedes VirtualNetwork.
- CAPV überprüft den Status von VirtualNetwork und fährt mit dem nächsten Schritt im Workflow fort.
Der VM-Dienstcontroller sucht nach benutzerdefinierten Objekten, die von CAPV erstellt wurden, und verwendet diese Spezifikationen, um die VMs zu erstellen und zu konfigurieren, aus denen der TKG-Cluster besteht.
NSX Container Plugin (NCP) ist ein Controller, der Netzwerkressourcen überwacht, die über die Kubernetes-API zu „etcd“ hinzugefügt wurden, und die Erstellung entsprechender Objekte in NSX orchestriert.
Jeder dieser Controller wird als Kubernetes-Pods auf der Supervisor-Steuerungsebene ausgeführt. Um Netzwerkprobleme zu beheben, überprüfen Sie das CAPV-Controller-Protokoll, das VM-Dienstprotokoll und das NCP-Protokoll.
- Ungültige Anzahl der Steuerungsebenenknoten
-
TKG-Cluster auf Supervisor unterstützt 1 oder 3 Steuerungsebenenknoten. Wenn Sie eine andere Anzahl an Replikaten eingeben, schlägt die Clusterbereitstellung fehl.
- Ungültige Speicherklasse für Steuerungsebenen-/Worker-VM
-
Führen Sie den folgenden Befehl aus:
kubectl describe ns <tkg-clsuter-namesapce>
Stellen Sie sicher, dass dem Namespace, in dem Sie versuchen, den TKG-Cluster zu erstellen, eine Speicherklasse zugewiesen wurde. Im vSphere-Namespace muss ein Ressourcenkontingent vorhanden sein, das auf diese Speicherklasse verweist, und die Speicherklasse muss in Supervisor vorhanden sein.
Stellen Sie sicher, dass der Name mit der Speicherklasse übereinstimmt, die in Supervisor vorhanden ist. Führen Sie
kubectl get storageclasses
Supervisor als vSphere-Administrator aus. WCP kann den Namen umwandeln, wenn das Speicherprofil auf Supervisor angewendet wird (z. B. werden Bindestriche zu Unterstrichen). - Ungültige VM-Klasse
-
Stellen Sie sicher, dass der in der Cluster-YAML angegebene Wert mit einer der von
kubectl get virtualmachineclass
zurückgegebenen VM-Klassen übereinstimmt. Nur gebundene Klassen können von einem TKG-Cluster verwendet werden. Eine VM-Klasse ist gebunden, wenn Sie sie zum vSphere-Namespace hinzufügen.Der Befehl
kubectl get virtualmachineclasses
gibt alle VM-Klassen auf dem Supervisor zurück, aber nur diejenigen, die gebunden sind, können verwendet werden. - TKR-Distributionen konnten nicht gefunden werden
-
Es wird eine Fehlermeldung ähnlich der folgenden angezeigt:
“Error from server (unable to find Kubernetes distributions): admission webhook “version.mutating.tanzukubernetescluster.run.tanzu.vmware.com” denied the request: unable to find Kubernetes distributions”
Dies ist wahrscheinlich auf ein Problem mit der Inhaltsbibliothek zurückzuführen. Um die verfügbaren Funktionen aufzulisten, verwenden Sie den Befehl
kubectl get virtualmachineimages -A
. Das Ergebnis ist das, was in Ihrer Inhaltsbibliothek verfügbar ist und synchronisiert oder hochgeladen wird.Für TKG auf Supervisor gibt es neue TKR-Namen, die mit der neuen TKR-API kompatibel sind. Sie müssen sicherstellen, dass Sie jede TKR in der Inhaltsbibliothek korrekt benennen.
Name in Inhaltsbibliothek:
photon-3-amd64-vmi-k8s-v1.23.8---vmware.2-tkg.1-zshippable
Entsprechender Name in der TKG-Clusterspezifikation:
version: v1.23.8+vmware.2-tkg.1-zshippable
TKG-YAML wird angewendet. Es werden keine VMs erstellt
- Überprüfen der CAPI-/CAPV-Ressourcen
-
Überprüfen Sie, ob TKG die Ressourcen auf CAPI-/CAPV-Ebene erstellt hat.
- Überprüfen Sie, ob CAPV die VirtualMachine-Ressourcen erstellt hat.
- Überprüfen Sie die VM-Operator-Protokolle, um festzustellen, warum die VM nicht erstellt wurde. Beispiel: Die OVF-Bereitstellung ist möglicherweise aufgrund unzureichender Ressourcen auf dem ESX-Host fehlgeschlagen.
- Überprüfen Sie die CAPV- und VM-Operator-Protokolle.
- Überprüfen Sie die NCP-Protokolle. NCP ist für die Realisierung von VirtualNetwork, VirtualNetworkInterface und LoadBalancer für die Steuerungsebene verantwortlich. Wenn ein Fehler im Zusammenhang mit diesen Ressourcen auftritt, kann dies ein Problem darstellen.
- Fehler bei VM-Diensten
-
Fehler bei VM-Diensten
kubectl get virtualmachineservices
in Ihrem Namespace ausführen- Wurde ein VM-Dienst erstellt?
kubectl describe virtualmachineservices
in Ihrem Namespace ausführen- Werden Fehler im VM-Dienst gemeldet?
- Virtuelle Netzwerkfehler
-
Führen Sie
kubectl get virtualnetwork
in Ihrem Namespace aus.Wird das virtuelle Netzwerk für diesen Cluster erstellt?
Führen Sie
kubectl describe virtual network
in Ihrem Namespace aus.Wird die virtuelle Netzwerkschnittstelle für die VM erstellt?
Die Steuerungsebene des TKG-Clusters wird nicht ausgeführt
- Überprüfen, ob Ressourcen bereit waren, als ein Fehler aufgetreten ist
-
Neben der Suche nach Protokollen hilft Ihnen die Überprüfung des Status der zugehörigen Objekte ControlPlaneLoadBalancer zu verstehen, ob die Ressourcen bereit waren, als der Fehler auftrat. Weitere Informationen finden Sie unter „Fehlerbehebung beim Netzwerk“.
- Handelt es sich um eine Steuerungsebene für den Knotenbeitritt, die nicht aktiv ist, oder um einen Initialisierungsknoten?
-
Knotenbeitritte funktionieren manchmal nicht ordnungsgemäß. Sehen Sie sich die Knotenprotokolle für eine bestimmte VM an. Im Cluster fehlen möglicherweise Worker- und Steuerungsebenenknoten, wenn der Initialisierungsknoten nicht erfolgreich ausgeführt wird.
- Anbieter-ID ist im Knotenobjekt nicht festgelegt
-
Wenn die VM erstellt wurde, überprüfen Sie, ob sie über IP-Adressen verfügt, und prüfen Sie dann die cloud-init-Protokolle (und ob kubeadm-Befehle werden ordnungsgemäß ausgeführt werden)
Überprüfen Sie die CAPI-Controller-Protokolle, um festzustellen, ob ein Problem vorliegt. Sie können dies mit
kubectl get nodes
auf dem TKG-Cluster überprüfen und dann prüfen, ob die Anbieter-ID auf dem Knotenobjekt vorhanden ist.
TKG-Worker-Knoten werden nicht erstellt
kubectl describe cluster CLUSTER-NAME
Suchen Sie nach Ressourcen für virtuelle Maschinen im Namespace. Wurden weitere erstellt?
Überprüfen Sie die CAPV-Protokolle, um festzustellen, warum keine Bootstrap-Daten der anderen virtuellen Maschinenobjekte erstellt werden.
Wenn CAPI nicht über den Lastausgleichsdienst mit der Steuerungsebene des TKG-Clusters – entweder NSX mit der IP-Adresse der Knoten-VM oder VDS mit externem Lastausgleichsdienst – kommunizieren kann, rufen Sie die kubeconfig-Datei des TKG-Clusters mithilfe des geheimen Schlüssels im Namespace ab:
kubectl get secret -n <namespace> <tkg-cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tkg-cluster-kubeconfig; kubectl --kubeconfig tkg-cluster-kubeconfig get pods -A
Wenn dieser Vorgang mit der Meldung „Verbindung abgelehnt“ fehlschlägt, wurde Ihre Steuerungsebene wahrscheinlich nicht ordnungsgemäß initialisiert. Wenn eine E/A-Zeitüberschreitung vorliegt, überprüfen Sie die Konnektivität mit der IP-Adresse in „kubeconfig“.
NSX mit eingebettetem Lastausgleichsdienst:
- Stellen Sie sicher, dass der Lastausgleichsdienst für die Steuerungsebene aktiv und erreichbar ist.
- Wenn der Lastausgleichsdienst nicht über eine IP verfügt, überprüfen Sie die NCP-Protokolle und die NSX-T Benutzeroberfläche, um festzustellen, ob sich die zugehörigen Komponenten in den richtigen Zuständen befinden. (NSX-T LB, VirtualServer, ServerPool sollten sich alle in einem fehlerfreien Zustand befinden.)
- Wenn LB eine IP hat, aber nicht erreichbar ist (
curl -k https://<LB- VIP>:6443/healthz
sollte den Fehler „nicht autorisiert“ zurückgeben).Wenn sich der LoadBalancer-Typ der externen IP-Adresse des Diensts im Status „ausstehend“ befindet, überprüfen Sie, ob der TKG-Cluster über die LB-VIP des Supervisors mit der Kubernetes-API des Supervisors kommunizieren kann. Stellen Sie sicher, dass sich keine IP-Adressen überschneiden.
- Überprüfen Sie, ob die Steuerungsebene des TKG-Clusters einen Fehler meldet (wie z. B. „Knoten mit Anbieter-ID kann nicht erstellt werden“).
- Der Cloud-Anbieter des TKG-Clusters hat den Knoten nicht mit der korrekten Anbieter-ID markiert, daher kann CAPI die Anbieter-ID im Gastclusterknoten und die Maschinenressource im Supervisor-Cluster nicht vergleichen, um sie zu überprüfen.
kubectl get po -n vmware-system-cloud-provider
kubectl logs -n vmware-system-cloud-provider <pod name>
Wenn der VirtualMachineService-Abgleich durch VMOP nicht erfolgreich war, überprüfen Sie das VM-Operator-Protokoll.
Wenn NCP Probleme beim Erstellen von NSX-T-Ressourcen hatte, überprüfen Sie das NCP-Protokoll.
kubectl get virtualmachine -n <namespace> <TKC-name>-control-plane-0 -o yaml
ssh vmware-system-user@<vm-ip> -i tkc-cluster-ssh
cat /var/log/cloud-init-output.log | less
Bereitgestellter TKG-Cluster bleibt in der Phase „Wird erstellt“ hängen
Führen Sie die folgenden Befehle aus, um den Status des Clusters zu überprüfen.
kubectl get tkc -n <namespace>
kubectl get cluster -n <namespace>
kubectl get machines -n <namespace>KubeadmConfig war vorhanden, konnte von CAPI aber nicht gefunden werden. Es wurde überprüft, ob das Token in „vmware-system-capv“ über die erforderlichen Berechtigungen zum Abfragen von „kubeadmconfig“ verfügte.
$kubectl --token=__TOKEN__ auth can-i get kubeadmconfig yesEs ist möglich, dass der Controller-Laufzeit-Cache nicht aktualisiert wurde. Die CAPI-Watch-Caches sind möglicherweise veraltet und nehmen die neuen Objekte nicht auf. Starten Sie bei Bedarf „capi-controller-manager“ neu, um das Problem zu beheben.
kubectl rollout restart deployment capi-controller-manager -n vmware-system-capv
vSphere-Namespace bleibt in der Phase „Wird beendet“ hängen
Stellen Sie sicher, dass TKR, Supervisor und vCenter im Hinblick auf die Versionskompatibilität synchron sind.
kubectl describe namespace NAME
Der folgende Fehler wurde gefunden: „Error from server (unable to find Kubernetes distributions): admission webhook "version.mutating.tanzukubernetescluster.run.tanzu.vmware.com" denied the request: unable to find Kubernetes distributions“
kubectl get virtualmachineimages -A