Auf dieser Seite wird beschrieben, wie Sie Probleme beheben, die bei der Installation oder dem Upgrade des privaten Anthos-Modus auftreten können.
Voraussetzungen für die Fehlerbehebung
Der private Anthos-Modus erfordert eine Anmeldung bei einer Administrator-Workstation, damit Sie mit der Fehlerbehebung beginnen können. Führen Sie den folgenden Befehl aus, um sich bei Ihrer Administrator-Workstation anzumelden:
ssh <USERNAME>@<WORKSTATION>
cd ./anthos-baremetal-private-mode
export PATH=$PWD/bin:$PATH
Cluster erstellen
In diesem Abschnitt wird beschrieben, wie Sie Probleme beim Erstellen von Clustern im privaten Anthos-Modus beheben.
Fehler beim Erstellen des Administratorclusters
In diesem Abschnitt werden häufige Konfigurationen von Administratorclustern und Preflight-Fehler sowie Vorschläge zur Behebung aufgelistet.
Konfigurationsfehler
Häufige Probleme bei der Konfiguration des Administratorclusters sind eine fehlende Annotation in der Konfiguration, eine fehlende Authentifizierungskonfiguration für die Registry und ein Fehler bei der Erstellung des Bootstrap-Clusters.
Fehlende Annotation in der Konfiguration
Wenn Ihre Konfigurationsdatei während der Erstellung von Knotenpoolressourcen keine Annotation enthält, wird möglicherweise der folgende Fehler angezeigt:
Cluster.baremetal.cluster.gke.io "admin" is invalid: [Spec.LoadBalancer.AddressPools: Forbidden: Field not allowed for admin clusters, Spec.GKEConnect: Required value: Field is required].
Zur Behebung dieses Problems fügen Sie der Konfigurationsdatei des Administratorclusters eine Annotation hinzu und legen die Annotation auf true
fest:
annotations:
baremetal.cluster.gke.io/private-mode: "true"
Ein Beispiel für eine angewendete Annotation in einer Konfigurationsdatei für einen Administratorcluster finden Sie unter Administratorcluster und Knotenpool.
Fehlende Authentifizierungskonfiguration für die Registry
Wenn die Authentifizierungskonfiguration fehlt, kann der Fehler no auth config found for the registry
auftreten.
Prüfen Sie, ob der in der Datei admin.yaml
angegebene pullCredentialConfigPath
eine Authentifizierungskonfiguration für den Endpunkt enthält.
Wenn der Endpunkt beispielsweise https://10.200.0.2
und pullCredentialConfigPath
gleich /root/.docker/config.json
ist, hat die Datei config.json
den folgenden Authentifizierungseintrag:
{
"auths": {
"10.200.0.2": {
"auth": "<base64 encoded auth>"
}
}
}
Wenn der Authentifizierungseintrag für die Registry nicht vorhanden ist, aktualisieren Sie die Datei config.json
. Melden Sie sich dazu in der Registry an:
docker login <registry> -u <username> -p <password>
Fehler beim Erstellen des Bootstrap-Clusters
Beim Erstellen des Clusters kann der folgende Fehler auftreten:
failed: error creating bootstrap cluster: failed to pull kind image kindest/node:v0.11.1-gke.7-v1.20.9-gke.101 from registry mirror(s)
Wenn der Fehler "error creating bootstrap cluster" angezeigt wird, prüfen Sie, ob alle Images in die private Registry hochgeladen wurden:
actl images push --private-registry=<registry>
Ein Beispielbefehl sieht so aus:
actl images push --private-registry=10.200.0.2/library
Preflight-Fehler
Wenn Sie Ihren Administratorcluster im privaten Anthos-Modus erstellen, müssen Sie möglicherweise ein Fehlschlagen der Clustererstellung mit Preflight-Fehlern oder eine hängengebliebene Clustererstellung beheben oder eine allgemeine Fehlerbehebung durchführen.
Fehlschlagen der Clustererstellung mit Preflight-Fehlern
Wenn die Preflight-Prüfung fehlgeschlagen ist, wird möglicherweise die folgende Fehlermeldung angezeigt:
unable to create cluster: unable to create cluster: preflight check failed
Der private Anthos-Modus erfasst entsprechende Fehlerlogs im Verzeichnis actl-workspace/admin/log/preflight-<timestamp>/
, z. B. actl-workspace/admin/log/preflight-20210907-205726/
.
Prüfen Sie Folgendes, um das Problem zu beheben:
- Alle fehlgeschlagenen Knotenlogs in der Datei, die mit der IP-Adresse des Knotens benannt ist
- Netzwerkbezogene Logs in der Datei
node-network
Prüfen Sie anhand der Logdaten, ob offensichtliche Fehler wie nicht erfüllte Mindestanforderungen für Maschinen oder in Konflikt stehende Ports vorliegen. Aktualisieren Sie die Maschinen und versuchen Sie es noch einmal.
Hängen gebliebene Clustererstellung
Wenn die Clustererstellung lange dauert, z. B. mehr als 30 Minuten für einen Cluster mit drei Knoten, prüfen Sie den lokalen Bootstrap-Cluster, um festzustellen, ob beim Abrufen des Images Fehler auftreten:
kubectl --kubeconfig actl-workspace/.kindkubeconfig get pods -A
Wenn Pods den Status ImagePullErr
haben, achten Sie darauf, dass diese Images in die Registry hochgeladen werden:
actl images push --private-registry=<registry>
Ein Beispielbefehl sieht so aus:
actl images push --private-registry=10.200.0.2/library
Wenn ein bestimmter Clustererstellungsjob den Status Error
hat, prüfen Sie die Logs des entsprechenden Pods:
kubectl --kubeconfig actl-workspace/.kindkubeconfig get pods -n cluster-admin
kubectl --kubeconfig actl-workspace/.kindkubeconfig logs <pod-name> -n cluster-admin
Prüfen Sie die Logs, um festzustellen, ob Fehler manuell auf der Maschine behoben werden können. Sie können zusätzliche Fehler von der Maschine selbst erhalten, wenn Sie sich mit SSH bei der Maschine anmelden und journalctl --no-pager -l
ausführen.
Prüfen Sie mit dem folgenden Befehl, ob wichtige Dienste funktionieren:
service containerd status
service kubelet status
journalctl -u containerd
journalctl -u kubelet
# If needed sudo systemctl restart <service> to fix issues.
# sudo service <service> restart
# e.g.,
# sudo service containerd restart
Allgemeine Probleme
Um eine allgemeine Fehlerbehebung für einen Knoten durchzuführen, stellen Sie mit SSH eine Verbindung zum Knoten her und führen Sie den folgenden Befehl aus:
journalctl --no-pager -l
Prüfen Sie die Logs auf Fehler.
Fehler bei der Clustererstellung
Stellen Sie eine SSH-Verbindung zur Maschine der Steuerungsebene her und sehen Sie sich die Pods im Cluster an:
sudo kubectl --kubeconfig /etc/kubernetes/admin.conf get po -A
Netzwerkprobleme
In diesem Abschnitt werden die häufigsten netzwerkbezogenen Probleme im privaten Anthos-Modus erläutert und es wird beschrieben, wie Sie diese beheben können.
- Verwenden Sie
ip route
, um die Verbindung zwischen den einzelnen Knoten anzuzeigen und netzwerkbezogene Fehler zu prüfen. Wenn die VIP der Steuerungsebene nicht erreichbar ist, stellen Sie mit SSH eine Verbindung zu einem Knoten der Steuerungsebene her und führen Sie Folgendes aus:
journalctl -u containerd --no-pager -l # Check the logs of those pods as well. sudo kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system get po | grep -E "haproxy|keepalived" sudo crictl logs `sudo crictl ps | grep anthos-baremetal-haproxy | awk '{print $1}'` sudo crictl logs `sudo crictl ps | grep anthos-baremetal-keepalived | awk '{print $1}'`
Dieses Problem kann auftreten, wenn die Images
keepalived
undhaproxy
nicht in eine private Registry geladen werden.(Nur verwenden, nachdem der Administratorcluster erfolgreich erstellt wurde.) Wenn Dienst-IP-Adressen nicht erreichbar sind, suchen Sie in den Logs nach
metallb
-Pods:kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l app=metallb -l component=controller -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l app=metallb -l component=speaker -n kube-system
Wenn alle Pods bei der Containererstellung hängen bleiben, führen Sie einen der folgenden Schritte aus:
- Prüfen Sie die anetd-Operator-Bereitstellung und die anetd-DaemonSet-Logs.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods -l name=cilium-operator -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l name=cilium-operator -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods -l k8s-app=cilium -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l k8s-app=cilium -n kube-system
- Wenn kein Standardgateway definiert ist, funktionieren die IP-Tabellen möglicherweise nicht ordnungsgemäß, sodass der anetd-Operator möglicherweise nicht den kube-api-Server erreicht.
ip route add default via <some-ip> iptables-save -t nat iptables-save -t filter
Starten Sie den Knoten neu, um zu sehen, ob das Problem behoben wurde.
Häufige Fehler
kubectl-Befehle funktionieren nicht
Wenn Sie nicht das kubectl-Befehlszeilentool konfiguriert haben, um eine Verbindung zu einem Remote-Kubernetes API-Server herzustellen, wird die folgende Fehlermeldung angezeigt:
$ kubectl ...
The connection to the server localhost:8080 was refused - did you specify the right host or port?
Stellen Sie sicher, dass eine kubeconfig-Datei festgelegt ist. Dazu legen Sie entweder die KUBECONFIG-Umgebungsvariable fest oder führen die Befehle mit dem Flag --kubeconfig
aus.
Wenn Sie die Administrator-kubeconfig-Datei festlegen möchten, haben Sie folgende Möglichkeiten:
- Legen Sie die Umgebungsvariable auf die Administrator-kubeconfig-Datei fest:
export KUBECONFIG=$HOME/anthos-baremetal-private-mode/actl-workspace/admin/admin-kubeconfig
- Verwenden Sie die kubeconfig-Befehlszeilenoption:
kubectl --kubeconfig=$HOME/anthos-baremetal-private-mode/actl-workspace/admin/admin-kubeconfig
Weitere Informationen finden Sie unter Clusterzugriff mit kubeconfig-Dateien organisieren.
Fehler beim Erstellen des Nutzerclusters
Verwenden Sie auf Ihrer Workstation den folgenden Befehl, um auf den Administratorcluster zuzugreifen und sich clusterbezogene Pods anzusehen:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get po -n cluster-CLUSTER_NAME
Ersetzen Sie CLUSTER_NAME
durch den Namen Ihres Clusters.
Wenn der Nutzercluster weiterhin fehlschlägt, löschen Sie einen Nutzercluster und wenden Sie die folgende Konfiguration noch einmal an:
# Delete user cluster export ADMIN_KUBECONFIG=$(pwd)/actl-workspace/admin/admin-kubeconfig export USER_CLUSTER_NAME=user-1 kubectl -n cluster-${USER_CLUSTER_NAME} delete Cluster $USER_CLUSTER_NAME --kubeconfig=${ADMIN_KUBECONFIG} # Re-apply the user cluster YAML file KUBECONFIG=${ADMIN_KUBECONFIG} kubectl apply -f user.yaml # Wait until client config ready and stored in the path "$(pwd)/${USER_CLUSTER_NAME}-kubeconfig" export USER_KUBECONFIG=$(pwd)/${USER_CLUSTER_NAME}-kubeconfig waittime="5 minutes" endtime=$(date -ud "$waittime" +%s) while ! KUBECONFIG=${ADMIN_KUBECONFIG} actl clusters baremetal get-credentials -c "${USER_CLUSTER_NAME}" -o "${USER_KUBECONFIG}"; do if [[ $endtime -le $(date -u +%s) ]]; then echo "Client config not ready in $waittime, terminating" exit 1 fi echo "client config not ready, sleeping 30s" sleep 30 done # Check the user cluster status until all nodes are ready KUBECONFIG=${USER_KUBECONFIG} kubectl get nodes
Anthos Management Center erstellen
Unzureichende Ressourcen im Administratorcluster
Die benutzerdefinierte AdminOperator
-Ressource konfiguriert die Installation von Anthos Management Center. Prüfen Sie in den Google Kubernetes Engine-Ereignissen und -Logs der benutzerdefinierten Ressource und des Controllers, ob im Controller bei der Installation des Management Centers Probleme aufgetreten sind:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig describe adminoperator admin-operator
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -n anthos-management-center-operator -l control-plane=admin-operator
Fehler beim Abrufen des Images
Das Starten von Pods im Cluster kann zu Problemen führen, die verhindern, dass der AdminOperator
Erfolg meldet.
# Get all pods that aren't in a Running state or have succeeded.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods --field-selector=status.phase!=Running,status.phase!=Succeeded -A
# Examine the pods of interest that are failing...
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig describe pod --namespace [NAMESPACE] [POD_OF_INTEREST]
Upgrade
Anthos on Bare Metal
Weitere Informationen zum Beheben von Problemen im Zusammenhang mit einem Upgrade in Anthos on Bare Metal finden Sie unter Fehlgeschlagenes Upgrade in Anthos on Bare Metal wiederherstellen.
Anthos-Verwaltungszentrum
Mit folgendem Befehl können Sie die Version der installierten Komponente prüfen:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get adminoperator admin-operator -o yaml
Hier ein Beispiel für die Ausgabe:
apiVersion: managementcenter.anthos.cloud.google.com/v1
kind: AdminOperator
spec:
updateConfigOverride:
policies:
- name: anthos-config-management
versionConstraint: <=1.8.0-gke.0
status:
components:
- name: anthos-bare-metal
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
- name: anthos-config-management
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
- name: anthos-service-mesh
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
version: 1.8.0-gke.0
In einer bereitgestellten Umgebung mit dem privaten Anthos-Modus gibt status.version
im AdminOperator
-Objekt die Releaseversion des privaten Anthos-Modus an.
Beispiel: 1.8.0-gke.0
. status.components
zeigt den Versionsstatus der einzelnen Komponenten an. Hier werden die beobachtete Version und die Versionseinschränkung für jede bereitgestellte Komponente aufgeführt.
Sowohl status.version
als auch status.components
müssen immer verfügbar sein, andernfalls ist die Installation beschädigt.
spec.updateConfigOverride
ist optional. Es ist nur vorhanden, wenn Infrastrukturbetreiber das Feld zur manuellen Aktualisierung einer bestimmten Komponente festlegen. Wenn das Feld nicht angegeben wird, werden alle Komponenten in der gleichen Version wie AdminOperator
ausgeführt.
Pakete im Updatecenter prüfen
Nur im Updatecenter angebotene Pakete werden im Management Center bereitgestellt.
Wenn Sie beispielsweise den Administratorcluster mit dem Release 1.8.0-gke.0
installieren und später ein Upgrade auf 1.8.1-gke.0
durchführen, enthält das Updatecenter zwei Gruppen von Paketen. Wenn Sie die Ressource UpdateItem
für eine aktiv verwendete Komponente löschen, kann die Installation des privaten Anthos-Modus beschädigt werden.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get updateitems -n anthos-management-center
Hier ein Beispiel für die Ausgabe:
NAME AGE
anthos-config-management-1.8.0-gke.0 13d
anthos-service-mesh-1.8.0-gke.0 13d