Cette page explique comment utiliser l'outil de ligne de commande actl
dans le mode privé d'Anthos afin de diagnostiquer les problèmes liés aux clusters. La commande diagnose
génère un fichier d'archive contenant une collection de journaux capturant l'état du cluster.
Introduction
Vous pouvez capturer l'état de vos clusters à l'aide de la commande actl diagnose
.
Les informations de diagnostic peuvent vous aider à détecter les problèmes et à déboguer vos déploiements plus efficacement. La commande capture tous les fichiers de configuration des clusters et de nœuds pertinents pour le champ d'application défini, puis regroupe les informations dans une archive tar unique. Les indicateurs de la commande vous permettent de choisir le champ d'application de diagnostic de la commande.
actl diagnose
Utilisez la commande actl diagnose
pour résoudre les problèmes liés aux clusters. Cette commande compresse l'état, les configurations et les journaux d'un cluster dans un fichier tar. La configuration par défaut de la commande capture les informations suivantes concernant votre cluster :
- Version de Kubernetes
- État des ressources Kubernetes dans les espaces de noms des contrôleurs kube-system et APM: cluster, machine, nœuds, Services, Endpoints, ConfigMaps, ReplicaSets, CronJobs, Pods et les propriétaires de ces pods, y compris les déploiements, DaemonSets et StatefulSets.
- État du plan de contrôle utilisateur si le cluster cible est un cluster d'utilisateur (le plan de contrôle du cluster d'utilisateur s'exécute dans le cluster d'administrateur)
- Détails sur chaque configuration de nœud, y compris les adresses IP, les règles iptables, les points d'installation, le système de fichiers, les connexions réseau et les processus en cours d'exécution.
- Journaux de conteneur à partir du nœud du plan de contrôle du cluster d'administrateur, lorsque le serveur d'API Kubernetes n'est pas disponible
- Informations du système Istio, y compris les pods, les services, les déploiements, les points de terminaison, les secrets, les ConfigMaps, les journaux actuels et précédents de tous les composants et du side-car Istio, et tous les artefacts de configuration d'Istio
- Informations dans Config Sync, y compris les configurations dans les espaces de noms associés à config-management-system.
- Journaux de la commande
actl diagnose
Créer un instantané à partir d'un scénario
La commande actl diagnose
accepte cinq scénarios. Pour spécifier un scénario, utilisez l'option --scenario
pour collecter des instantanés pour l'une des configurations suivantes :
- all : (par défaut) inclut tous les scénarios prédéfinis, y compris : auth, config-management, kubernetes, management-center et service-mesh.
- auth
- config-management
- kubernetes
- management-center
- service-mesh
Vous pouvez utiliser chacun des cinq scénarios avec le cluster d'administrateur. Pour créer un instantané du cluster d'administrateur à l'aide du scénario "all" :
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
--cluster=CLUSTER_NAME\
--scenario=all
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: fichier kubeconfig du cluster d'administrateur.- (Facultatif)
CLUSTER_NAME
: nom du cluster d'administrateur. Si vous ne connaissez pas le nom du cluster, omettez cette option. Vous êtes alors invité à sélectionner un cluster à partir duquel effectuer un instantané.
Le résultat inclut une liste de fichiers et le nom d'un fichier tar :
Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots throttled at 10 in-flight requests...
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".
Limiter un instantané à une période
Vous pouvez utiliser l'option --log-since
pour limiter la collecte de journaux à une période récente. Par exemple, vous pouvez collecter les journaux des deux derniers jours ou des trois dernières heures. Par défaut, diagnose
collecte les journaux des 24 dernières heures. Cette option n'est compatible qu'avec les journaux kubectl
.
Pour limiter la période de collecte de journaux, procédez comme suit :
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--scenario=all \
--log-since=DURATION
Remplacez DURATION
par une valeur de temps telle que 2d ou 3h. La durée par défaut est de 24 heures.
Effectuer une simulation pour un instantané
Vous pouvez utiliser l'option --dry-run
pour afficher les actions à effectuer et la configuration de l'instantané.
Pour effectuer une simulation de votre cluster d'administrateur, procédez comme suit :
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--dry-run
Personnaliser une configuration d'instantané
Si aucun des cinq scénarios ne répond pas à vos besoins, vous pouvez créer un instantané personnalisé. Vous pouvez soit générer une configuration, la copier et la coller dans un nouveau fichier de configuration, soit créer un fichier de configuration à partir de zéro. Vous pouvez ensuite créer l'instantané à partir du fichier de configuration personnalisé.
Option 1 : Générer une configuration d'instantané
Vous pouvez générer une configuration d'instantané pour un scénario donné en transmettant les options --scenario
et --dry-run
. Par exemple, pour afficher la configuration d'instantané pour le scénario "all(par défaut)" d'un cluster, saisissez la commande suivante :
actl diagnose \
--scenario=all \
--dry-run \
Voici un exemple de résultat :
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 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
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
IstioBugReport:
Enabled: true
Vous pouvez copier et coller le résultat de cette commande depuis l'interface de ligne de commande dans un nouveau fichier de configuration que vous créez, par exemple myconfig.yaml
. Vous pouvez modifier les valeurs suivantes:
InFlightRequests
: nombre de threads parallèles utilisés pour prendre des instantanés.excludeWords
: liste de mots à exclure de l'instantané (non sensible à la casse). Les lignes contenant ces mots sont supprimées des résultats de l'instantané. "mot de passe" est toujours exclu, que vous le spécifiiez ou non.kubectlCommands
: liste des commandeskubectl
à exécuter. Les commandes s'exécutent sur les espaces de noms correspondants. Pour les commandeskubectl logs
, tous les pods et conteneurs des espaces de noms correspondants sont automatiquement ajoutés. Les expressions régulières sont compatibles avec la spécification des espaces de noms. Si vous ne spécifiez pas d'espace de noms, l'espace de nomsdefault
est utilisé.nodeCommands
: liste des commandes à exécuter sur les nœuds correspondants. Les résultats sont enregistrés. Lorsqu'aucun nœud n'est spécifié, tous les nœuds du cluster cible sont pris en compte.nodeFiles
: liste des fichiers à collecter à partir des nœuds correspondants. Les fichiers sont enregistrés. Lorsqu'aucun nœud n'est spécifié, tous les nœuds du cluster cible sont pris en compte.istioBugReport
: option permettant d'activer l'instantanéistioctl bug-report
.nomosBugReport
: option permettant d'activer l'instantanénomos bugreport
.
Option 2: Définissez manuellement un fichier de configuration d'instantané personnalisé
Créez un fichier YAML avec les paramètres d'instantané de votre choix, par exemple :
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 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
Créer un instantané à l'aide de la configuration personnalisée
Transmettez votre fichier de configuration d'instantané personnalisé à l'aide de l'option --snapshot-config
:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--snapshot-config=SNAPSHOT_CONFIG_FILE
Remplacez SNAPSHOT_CONFIG_FILE
par le nom de votre fichier de configuration d'instantané personnalisé, par exemple myconfig.yaml
.
Examiner le contenu de l'instantané
Pour examiner le contenu du fichier tar, vous devez l'extraire en utilisant la commande suivante :
tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz --directory EXTRACTION_DIRECTORY_NAME
Examinez le contenu du fichier tar avant de l'envoyer en pièce jointe lors de vos interactions avec l'assistance.