Clusterprobleme diagnostizieren

Diese Seite richtet sich an Plattformadministratoren oder Infrastrukturbetreiber.

Auf dieser Seite wird beschrieben, wie Sie mit dem actl-Befehlszeilentool in Anthos im ausgeführten Modus die Probleme mit Clustern diagnostizieren. Der Befehl diagnose generiert eine Archivdatei mit einer Sammlung von Logs, die den Status des Clusters erfassen.

Einführung

Mit dem Befehl actl diagnose können Sie den Status Ihrer Administrator- oder Nutzercluster erfassen. Mithilfe der Diagnoseinformationen können Sie Probleme entdecken und Fehler in Ihren Bereitstellungen effektiver beheben. Der Befehl erfasst alle relevanten Cluster- und Knotenkonfigurationsdateien für Ihren definierten Bereich und verpackt die Informationen dann in einem einzigen TAR-Archiv. Mit den Flags für den Befehl können Sie den Diagnosebereich des Befehls auswählen.

actl diagnose

Verwenden Sie den Befehl actl diagnose, um Probleme mit Clustern zu beheben. Dieser Befehl komprimiert den Status, die Konfigurationen und die Logs eines Clusters in einer TAR-Datei. Je nach Clustertyp (Administrator- oder Nutzercluster), für den ein Snapshot erstellt wird, werden unterschiedliche Informationen erfasst. Die Standardkonfiguration des Befehls erfasst die folgenden Informationen zu Ihrem Cluster:

  • Kubernetes-Version
  • Status von Kubernetes-Ressourcen in den Namespaces „kube-system“ und „APM's controllers“: Cluster, Maschine, Knoten, Services, Endpunkte, ConfigMaps, ReplicaSets, CronJobs, Pods und die Inhaber dieser Pods, einschließlich Deployments, DaemonSets und StatefulSets.
  • Status der Nutzersteuerungsebene, wenn der Zielcluster ein Nutzercluster ist (die Steuerungsebene des Nutzerclusters wird im Administratorcluster ausgeführt).
  • Details zu jeder Knotenkonfiguration, einschließlich IP-Adressen, iptables-Regeln, Bereitstellungspunkten, Dateisystem, Netzwerkverbindungen und ausgeführten Prozessen
  • Containerlogs vom Knoten der Steuerungsebene des Administratorclusters, wenn der Kubernetes API-Server nicht verfügbar ist.
  • Informationen im Istio-System, einschließlich Pods, Diensten, Deployments, Endpunkten, Secrets, ConfigMaps, aktuellen und vorherigen Logs aus allen Istio-Komponenten und Sidecar-Dateien sowie allen Istio-Konfigurationsartefakten.
  • Informationen in Config Sync, einschließlich Konfigurationen in Namespaces im Konfigurationsmanagementsystem.
  • Logs aus dem Befehl actl diagnose.

Snapshot aus einem Szenario erstellen

Der Befehl actl diagnose unterstützt sechs Szenarien. Verwenden Sie zum Festlegen eines Szenarios das Flag --scenario, um Snapshots für jede der folgenden Konfigurationen zu erfassen:

  • Alle (Standard): Enthält alle vordefinierten Szenarien, einschließlich Authentifizierung, Konfigurationsmanagement, Kubernetes, Management-Center und Service Mesh.
  • auth
  • config-management
  • Kubernetes
  • management-center
  • Beobachtbarkeit
  • service-mesh

Sie können jedes der sechs Szenarien mit dem Administratorcluster oder den Nutzerclustern verwenden. So erstellen Sie einen Snapshot eines Clusters mit dem gesamten Szenario:

Administratorcluster

Wenn Sie die kubeconfig-Anmeldedaten für den Administratorcluster haben und Lesezugriff auf Cluster-Informationen haben, können Sie einen Snapshot mit dem gesamten Szenario erstellen. Führen Sie dazu den folgenden Befehl aus:

 actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
    --cluster=CLUSTER_NAME\
    --scenario=all

Ersetzen Sie Folgendes:

  • ADMIN_CLUSTER_KUBECONFIG ist die kubeconfig-Datei für den Administratorcluster.
  • CLUSTER_NAME ist der Name des Clusters. Wenn Sie den Clusternamen nicht kennen, lassen Sie dieses Flag weg. Sie werden dann aufgefordert, einen Cluster für den Snapshot auszuwählen.

Nutzercluster

Wenn Sie nur kubeconfig-Anmeldedaten für einen Nutzercluster haben, können Sie mit dem folgenden Befehl einen Snapshot dieses Nutzerclusters erstellen:

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG\
    --scenario=all

Ersetzen Sie USER_CLUSTER_KUBECONFIG durch die Datei "kubeconfig" für den Nutzercluster.

Die Ausgabe enthält eine Liste von Dateien und den Namen einer Tar-Datei.

Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots in 10 thread(s)...
  kubectlCommands/anthos-management-center-operator/kubectl_get_updateitems
  kubectlCommands/kubectl_cluster-info
  kubectlCommands/kubectl_version
  kubectlCommands/anthos-management-center/kubectl_logs_git-server-0_--container_git-server_--since_24h0m0s
  kubectlCommands/anthos-management-center/kubectl_get_deployments
  ...
  nodes/10.200.0.5/files/lib/systemd/system/docker.service
  nodes/10.200.0.4/files/lib/systemd/system/docker.service
  ...
  istioCommands/istioctl_bug-report

Snapshot succeeded.
Snapshots saved in "[TAR_FILE_PATH]/[TAR_FILE_NAME].tar.gz".

Snapshot auf einen Zeitraum beschränken

Mit dem Flag --log-since können Sie die Logerfassung auf einen aktuellen Zeitraum beschränken. Beispielsweise können Sie die Logs der letzten zwei Tage oder der letzten drei Stunden erfassen. Standardmäßig erfasst diagnose Logs der letzten 24 Stunden. Dieses Flag wird nur für kubectl-Logs unterstützt.

So begrenzen Sie den Zeitraum für die Logerfassung:

Administratorcluster

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --scenario=all \
    --log-since=DURATION

Nutzercluster

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --scenario=all \
    --log-since=DURATION

Ersetzen Sie DURATION durch einen Zeitwert, z. B. 2d oder 3h. Die Standarddauer beträgt 24 Stunden.

Probelauf für einen Snapshot durchführen

Sie können das Flag --dry-run verwenden, um die auszuführenden Aktionen und die Snapshot-Konfiguration anzeigen zu lassen.

So führen Sie einen Probelauf für Ihren Administratorcluster aus:

Administratorcluster

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --dry-run

Nutzercluster

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --dry-run

Snapshot-Konfiguration anpassen

Wenn die sechs Szenarien Ihren Anforderungen nicht entsprechen, können Sie einen benutzerdefinierten Snapshot erstellen. Sie können entweder eine Konfiguration generieren, diese kopieren und in eine neue Konfigurationsdatei einfügen oder eine neue Konfigurationsdatei erstellen. Anschließend können Sie den Snapshot aus der benutzerdefinierten Konfigurationsdatei erstellen.

Option 1: Snapshot-Konfiguration generieren

Sie können für das jeweilige Szenario eine Snapshot-Konfiguration generieren, indem Sie die Flags --scenario und --dry-run übergeben. Um beispielsweise die Snapshot-Konfiguration für das all(default)-Szenario eines Clusters anzuzeigen, geben Sie den folgenden Befehl ein:

actl diagnose \
    --scenario=all  \
    --dry-run

Hier ein Beispiel für die Ausgabe:

ExcludeWords:
- certificateAuthorityData
- password
IstioBugReport:
  Enabled: true
KubectlCommands:
- Commands:
  - kubectl get deployments
  - kubectl get deployments -o yaml
  - kubectl get pods
  - kubectl get pods -o yaml
  - kubectl get secret
  - kubectl logs
  - kubectl get gateways -o yaml
  Namespaces:
  - istio-system
NodeCommands:
- Commands:
  - uptime
  - df --all --inodes
  - ip addr
  - iptables-save --counters
  - mount
  - ip route list table all
  - top -bn1
  - docker info
  - docker ps -a
  - ps -edF
  - ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
  - conntrack --count
  Nodes: []
NodeFiles:
- Files:
  - /proc/sys/fs/file-nr
  - /proc/sys/net/netfilter/nf_conntrack_max
  - /lib/systemd/system/kubelet.service
  - /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  - /lib/systemd/system/docker.service
  - /etc/docker/daemon.json
  Nodes: []
NomosBugReport:
  Enabled: true
NumOfParallelThreads: 10

Sie können die Ausgabe dieses Befehls von der Befehlszeilenschnittstelle in eine neue von Ihnen erstellte Konfigurationsdatei kopieren, z. B. myconfig.yaml. Sie können folgende Werte bearbeiten:

  • ExcludeWords: Liste der Wörter, die aus dem Snapshot ausgeschlossen werden sollen. Dabei wird die Groß- und Kleinschreibung nicht berücksichtigt. Zeilen, die diese Wörter enthalten, werden aus den Snapshot-Ergebnissen entfernt. "Passwort" ist immer ausgeschlossen, auch wenn Sie es angeben.
  • IstioBugReport: Flag zum Aktivieren des Snapshots istioctl bug-report.
  • KubectlCommands: Liste der auszuführenden kubectl-Befehle. Die Befehle werden für die entsprechenden Namespaces ausgeführt. Bei kubectl logs-Befehlen werden alle Pods und Container in den entsprechenden Namespaces automatisch hinzugefügt. Reguläre Ausdrücke werden für die Angabe von Namespaces unterstützt. Wenn Sie keinen Namespace angeben, wird der Namespace default angenommen.
  • NodeCommands: Liste der Befehle, die auf den entsprechenden Knoten ausgeführt werden sollen. Die Ergebnisse werden gespeichert. Wenn keine Knoten angegeben sind, werden alle Knoten im Zielcluster berücksichtigt.
  • NodeFiles: Liste der Dateien, die von den entsprechenden Knoten erfasst werden sollen. Die Dateien werden gespeichert. Wenn keine Knoten angegeben sind, werden alle Knoten im Zielcluster berücksichtigt.
  • NomosBugReport: Flag zum Aktivieren des Snapshots nomos bugreport.
  • NumOfParallelThreads: Anzahl der parallelen Threads, die zum Erstellen von Snapshots verwendet werden.

Option 2: Benutzerdefinierte Snapshot-Konfigurationsdatei manuell definieren

Erstellen Sie eine YAML-Datei mit den gewünschten Snapshot-Parametern, zum Beispiel:

ExcludeWords:
- certificateAuthorityData
- password
NumOfParallelThreads: 10
KubectlCommands:
- Commands:
  - kubectl get deployments
  - kubectl get deployments -o yaml
  - kubectl get pods
  - kubectl get pods -o yaml
  - kubectl get secret
  - kubectl logs
  - kubectl get gateways -o yaml
  Namespaces:
  - istio-system

Snapshot mithilfe der benutzerdefinierten Snapshot-Konfiguration erstellen

Übergeben Sie Ihre benutzerdefinierte Snapshot-Konfigurationsdatei mit dem Flag --snapshot-config:

Administratorcluster

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --snapshot-config=SNAPSHOT_CONFIG_FILE

Nutzercluster

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --snapshot-config=SNAPSHOT_CONFIG_FILE

Ersetzen Sie SNAPSHOT_CONFIG_FILE durch den Namen Ihrer benutzerdefinierten Snapshot-Konfigurationsdatei, z. B. myconfig.yaml.

Snapshot-Inhalt prüfen

Extrahieren Sie den Inhalt der TAR-Datei mit dem folgenden Befehl:

tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz  --directory EXTRACTION_DIRECTORY_NAME

Überprüfen Sie den Inhalt der TAR-Datei, bevor Sie sie den Interaktionen mit dem Support hinzufügen.

Weitere Informationen