Diagnostica dei problemi relativi ai cluster

Questa pagina è rivolta agli amministratori della piattaforma o agli operatori dell'infrastruttura.

In questa pagina viene spiegato come utilizzare lo strumento a riga di comando actl di Anthos in esecuzione in modalità disconnessa per diagnosticare i problemi relativi ai cluster. Il comando diagnose genera un file di archivio che contiene una raccolta di log che acquisiscono lo stato del cluster.

Introduzione

Puoi acquisire lo stato dell'amministratore o dei cluster utente con il comando actl diagnose. Le informazioni di diagnostica possono aiutarti a scoprire i problemi e a eseguire il debug dei deployment in modo più efficace. Il comando acquisisce tutti i file di configurazione dei cluster e dei nodi pertinenti per l'ambito definito e poi pacchettizza le informazioni in un singolo archivio tar. I flag per il comando ti consentono di scegliere l'ambito diagnostico del comando.

actl diagnose

Utilizza il comando actl diagnose per risolvere i problemi con i cluster. Questo comando comprime lo stato, le configurazioni e i log di un cluster in un file tar. A seconda del tipo di cluster (cluster di amministrazione o di utente) con snapshot, vengono raccolte informazioni diverse. La configurazione predefinita del comando acquisisce le seguenti informazioni sul tuo cluster:

  • Versione di Kubernetes
  • Stato delle risorse Kubernetes nei sistemi kube-system e APM's: spazi dei nomi cluster, cluster, macchina, nodi, servizi, endpoint, ConfigMap, ReplicaSet, CronJob, pod e proprietari di tali pod, inclusi deployment, DaemonSet e StatefulSet.
  • Lo stato del piano di controllo utente se il cluster di destinazione è un cluster utente (il piano di controllo del cluster utente viene eseguito nel cluster di amministrazione).
  • Dettagli su ogni configurazione dei nodi, inclusi indirizzi IP, regole iptables, punti di montaggio, file system, connessioni di rete ed processi in esecuzione.
  • I log del container del nodo del piano di controllo del cluster di amministrazione, quando il server API Kubernetes non è disponibile.
  • Informazioni nel sistema Istio, tra cui pod, servizi, deployment, endpoint, secret, configmap, log correnti e precedenti di tutti i componenti e sidecar Istio e tutti gli artefatti di configurazione Istio.
  • Le informazioni in Config Sync, incluse le configurazioni negli spazi dei nomi relativi a config-management-system.
  • Log dal comando actl diagnose.

Crea uno snapshot da uno scenario

Il comando actl diagnose supporta sei scenari. Per specificare uno scenario, utilizza il flag --scenario per raccogliere snapshot per una delle seguenti configurazioni:

  • all: (predefinito) include tutti gli scenari predefiniti, tra cui: auth, config-management, Kubernetes, management-center, osservabilità e service-mesh.
  • auth
  • configurazione-gestione
  • kubernetes
  • centro-gestione
  • osservabilità
  • mesh di servizi

Puoi utilizzare ognuno dei sei scenari con il cluster di amministrazione o i cluster utente. Per creare uno snapshot di un cluster utilizzando lo scenario Tutto:

Cluster di amministrazione

Se hai le credenziali di kubeconfig per il cluster di amministrazione e hai accesso per leggere le informazioni di Cluster, puoi acquisire uno snapshot con lo scenario completo eseguendo il comando seguente:

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

Sostituisci quanto segue:

  • ADMIN_CLUSTER_KUBECONFIG: il file kubeconfig per il cluster di amministrazione.
  • CLUSTER_NAME: il nome del cluster. Se non conosci il nome del cluster, ometti questo flag e ti viene chiesto di selezionare un cluster per lo snapshot.

Cluster utente

Se hai solo le credenziali kubeconfig per un cluster utente, puoi acquisire un'istantanea di quel cluster utente specifico con il comando seguente:

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

Sostituisci USER_CLUSTER_KUBECONFIG con il file kubeconfig per il cluster utente.

L'output include un elenco di file e il nome di un file tar:

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".

Limita uno snapshot a un periodo di tempo

Puoi utilizzare il flag --log-since per limitare la raccolta dei log a un periodo di tempo recente. Ad esempio, potresti raccogliere i log degli ultimi due giorni o delle ultime tre ore. Per impostazione predefinita, diagnose raccoglie i log delle ultime 24 ore. Il flag è supportato solo per kubectl log.

Per limitare il periodo di tempo per la raccolta dei log:

Cluster di amministrazione

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

Cluster utente

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

Sostituisci DURATION con un valore di tempo come 2d o 3h. La durata predefinita è 24 ore.

Esegui una prova per uno snapshot

Puoi utilizzare il flag --dry-run per mostrare le azioni da intraprendere e la configurazione della istantanea.

Per eseguire una prova sul cluster:

Cluster di amministrazione

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

Cluster utente

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

Personalizza una configurazione snapshot

Se i sei scenari non soddisfano le tue esigenze, puoi creare un'istantanea personalizzata. Puoi generare una configurazione, copiarla e incollarla in un nuovo file di configurazione, oppure crearne uno da zero. Poi potrai creare lo snapshot dal file di configurazione personalizzato.

Opzione 1: genera una configurazione dello snapshot

Puoi generare una configurazione dello snapshot per un determinato scenario passando nei flag --scenario e --dry-run. Ad esempio, per visualizzare la configurazione dello snapshot per lo scenario all(default) di un cluster, inserisci il comando seguente:

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

Ecco un esempio dell'output:

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

Puoi copiare e incollare l'output di questo comando dall'interfaccia a riga di comando in un nuovo file di configurazione creato da te, ad esempio myconfig.yaml. Puoi modificare i seguenti valori:

  • ExcludeWords: elenco di parole da escludere dallo snapshot (senza distinzione tra maiuscole e minuscole). Le righe che contengono queste parole vengono rimosse dai risultati dello snapshot. "password" è sempre esclusa, anche se la specifichi.
  • IstioBugReport: un flag per abilitare lo snapshot istioctl bug-report.
  • KubectlCommands: elenco di kubectl comandi da eseguire. I comandi vengono eseguiti contro gli spazi dei nomi corrispondenti. Per i comandi kubectl logs, tutti i pod e i container negli spazi dei nomi corrispondenti vengono aggiunti automaticamente. Per specificare gli spazi dei nomi sono supportate le espressioni regolari. Se non specifichi uno spazio dei nomi, viene utilizzato lo spazio dei nomi default.
  • NodeCommands: elenco di comandi da eseguire sui nodi corrispondenti. I risultati vengono salvati. Se i nodi non sono specificati, vengono presi in considerazione tutti i nodi nel cluster di destinazione.
  • NodeFiles: elenco di file da raccogliere dai nodi corrispondenti. I file vengono salvati. Se i nodi non sono specificati, vengono presi in considerazione tutti i nodi nel cluster di destinazione.
  • NomosBugReport: un flag per abilitare lo snapshot nomos bugreport.
  • NumOfParallelThreads: numero di thread paralleli utilizzati per acquisire gli snapshot.

Opzione 2: definisci manualmente un file di configurazione dello snapshot personalizzato

Crea un file YAML con i parametri snapshot che ti interessano, ad esempio:

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

Crea uno snapshot utilizzando la configurazione degli snapshot personalizzati

Passa il file di configurazione dello snapshot personalizzato utilizzando il flag --snapshot-config:

Cluster di amministrazione

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

Cluster utente

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

Sostituisci SNAPSHOT_CONFIG_FILE con il nome del file di configurazione dello snapshot personalizzato, ad esempio myconfig.yaml.

Esamina i contenuti dello snapshot

Per esaminare i contenuti del file tar, estrailo con il comando seguente:

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

Esamina i contenuti del file tar prima di allegarlo nelle tue interazioni con l'assistenza.

Passaggi successivi