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 Snapshotsistioctl bug-report
.KubectlCommands
: Liste der auszuführendenkubectl
-Befehle. Die Befehle werden für die entsprechenden Namespaces ausgeführt. Beikubectl 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 Namespacedefault
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 Snapshotsnomos 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
- Informationen zu bekannten Problemen.