Cette page est destinée aux administrateurs de plate-forme ou aux opérateurs d'infrastructure.
Cette page explique comment diagnostiquer les problèmes liés aux clusters à l'aide de l'outil de ligne de commande actl
dans Anthos en mode déconnecté. 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 d'administrateur ou d'utilisateur à 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. En fonction du type de cluster (cluster d'administrateur ou d'utilisateur) à partir duquel des instantanés sont créés, différentes informations sont collectées. 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 six 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, observabilité et service-mesh.
- auth
- config-management
- kubernetes
- management-center
- observabilité
- service-mesh
Vous pouvez utiliser chacun des six scénarios avec le cluster d'administrateur ou les clusters d'utilisateur. Pour créer un instantané d'un cluster en utilisant le scénario "all" :
Cluster d'administrateur
Si vous disposez des identifiants kubeconfig du cluster d'administrateur et que vous avez accès à des informations Cluster
, vous pouvez prendre un instantané avec tout le scénario en exécutant la commande suivante :
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
--cluster=CLUSTER_NAME\
--scenario=all
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: le fichier kubeconfig du cluster d'administrateurCLUSTER_NAME
: nom du cluster. 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é.
Cluster d'utilisateur
Si vous ne disposez que d'identifiants kubeconfig pour un cluster d'utilisateur, vous pouvez prendre un instantané de ce cluster d'utilisateur spécifique à l'aide de la commande suivante :
actl diagnose \
--kubeconfig=USER_CLUSTER_KUBECONFIG\
--scenario=all
Remplacez USER_CLUSTER_KUBECONFIG
par le fichier kubeconfig du cluster d'utilisateur .
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 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".
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 :
Cluster d'administrateur
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--scenario=all \
--log-since=DURATION
Cluster d'utilisateur
actl diagnose \
--kubeconfig=USER_CLUSTER_KUBECONFIG \
--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, procédez comme suit :
Cluster d'administrateur
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--dry-run
Cluster d'utilisateur
actl diagnose \
--kubeconfig=USER_CLUSTER_KUBECONFIG \
--dry-run
Personnaliser une configuration d'instantané
Si aucun des six 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érez 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
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
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
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.IstioBugReport
: option permettant d'activer l'instantanéistioctl bug-report
.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.NomosBugReport
: option permettant d'activer l'instantanénomos bugreport
.NumOfParallelThreads
: nombre de threads parallèles utilisés pour prendre des instantanés.
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
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
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
:
Cluster d'administrateur
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--snapshot-config=SNAPSHOT_CONFIG_FILE
Cluster d'utilisateur
actl diagnose \
--kubeconfig=USER_CLUSTER_KUBECONFIG \
--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.
Étapes suivantes
- En savoir plus sur les problèmes connus.