Lorsque vous rencontrez un problème avec l'un de vos clusters, vous pouvez obtenir de l'aide auprès de Cloud Customer Care. Le service client peut vous demander de prendre un "instantané" du cluster, qu'il pourra utiliser pour diagnostiquer le problème. Un instantané capture les fichiers de configuration des clusters et des nœuds, puis regroupe ces informations dans un seul fichier tar.
Ce document décrit comment créer des instantanés par défaut ou des instantanés plus personnalisés d'un cluster. Il explique également comment créer des instantanés lorsqu'un cluster rencontre des erreurs particulières.
Instantanés par défaut
Les sections suivantes décrivent le contenu d'un instantané standard et comment en créer un. Pour en savoir plus sur les instantanés personnalisés, consultez la section Instantanés personnalisés.
Quelles informations un instantané par défaut contient-il ?
L'instantané d'un cluster est un fichier tar de fichiers de configuration et de journaux concernant le cluster. Plus précisément, 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 kube-system et gke-system : 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
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 la commande
bmctl check cluster --snapshot
Les informations d'identification d'un cluster ne sont pas incluses dans l'instantané par défaut. Si l'assistance Cloud Customer Care demande ces informations, consultez la section Récupérer des informations sur un cluster.
Pour obtenir la liste complète des informations collectées lorsque vous exécutez la commande d'instantané, consultez le fichier de configuration présenté dans la section Le fichier de configuration en détail. Ce fichier de configuration indique les commandes exécutées lors de la prise d'un instantané par défaut.
Créer un instantané par défaut
La commande bmctl check cluster
prend un instantané d'un cluster. Vous pouvez utiliser cette commande pour effectuer l'une des actions suivantes :
- Créer un instantané et l'importer automatiquement dans un bucket Cloud Storage
- Créer un instantané d'un cluster et l'enregistrer sur l'ordinateur local sur lequel vous exécutez la commande
Méthode 1 : créer un instantané par défaut et l'importer automatiquement dans un bucket Cloud Storage
Pour créer et importer un instantané dans un bucket Cloud Storage, procédez comme suit :
Configurez l'API et le compte de service :
- Activez l'API Cloud Storage dans votre projet Google Cloud.
- Créez un compte de service que la commande
bmctl check cluster --snapshot
utilisera pour importer automatiquement un instantané de cluster dans un bucket Cloud Storage. - Attribuez un rôle
storage.admin
au compte de service afin qu'il puisse importer des données dans Cloud Storage. - Téléchargez la clé JSON du compte de service.
Pour en savoir plus, consultez la section Activer les services et comptes de service Google.
Exécutez la commande
bmctl
suivante pour créer un instantané et l'importer automatiquement dans un bucket Cloud Storage :bmctl check cluster --snapshot --cluster=CLUSTER_NAME --kubeconfig=KUBECONFIG_PATH --upload-to BUCKET_NAME [--service-account-key-file SERVICE_ACCOUNT_KEY_FILE]
Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement de cluster :
- CLUSTER_NAME : nom du cluster pour lequel vous souhaitez prendre un instantané.
- KUBECONFIG_PATH : chemin d'accès au fichier
kubeconfig
du cluster d'administrateur (le chemin d'accès au fichier kubeconfig est généralementbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Toutefois, si vous avez spécifié votre espace de travail avec l'optionWORKSPACE_DIR
, le chemin d'accès estWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
). - BUCKET_NAME : nom d'un bucket Cloud Storage dont vous êtes propriétaire.
- SERVICE_ACCOUNT_KEY_FILE_PATH : si vous ne fournissez pas l'option
--service-account-key-file
,bmctl
tente d'obtenir le chemin d'accès au fichier de clé du compte de service à partir de la variable d'environnementGOOGLE_APPLICATION_CREDENTIALS
.
Attribuez à Cloud Customer Care un accès en lecture au bucket contenant l'instantané :
gsutil iam ch \ serviceAccount:service-PROJECT_ID@anthos-support.iam.gserviceaccount.com:roles/storage.objectViewer \ gs://BUCKET_NAME
Méthode 2 : créer un instantané par défaut sur un ordinateur local
Vous pouvez capturer l'état de vos clusters à l'aide de la commande suivante :
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH
Remplacez les éléments suivants :
CLUSTER_NAME : nom du cluster cible.
KUBECONFIG_PATH : chemin d'accès au fichier
kubeconfig
du cluster d'administrateur (le chemin d'accès au fichier kubeconfig est généralementbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Toutefois, si vous avez spécifié votre espace de travail avec l'optionWORKSPACE_DIR
, le chemin d'accès estWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
).
Cette commande génère un fichier tar sur votre ordinateur local. Le nom de ce fichier tar est au format snapshot-CLUSTER_NAME-TIMESTAMP.tar.gz
, où TIMESTAMP
indique la date et l'heure de création du fichier. Ce fichier tar inclut des informations de débogage pertinentes concernant les composants système et les machines d'un cluster.
Lorsque vous exécutez cette commande, les informations sur les pods sont collectées à partir des espaces de noms suivants : gke-system
, gke-connect
, capi-system
, capi-webhook-system
, cert-manager
et capi-kubeadm-bootstrap-system
.
Cependant, vous pouvez étendre le champ d'application des informations de diagnostic collectées à l'aide de l'option --snapshot-scenario all
. Cette option augmente le champ d'application de l'instantané de diagnostic pour inclure tous les pods d'un cluster :
bmctl check cluster --snapshot --snapshot-scenario all \
--cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH
Scénarios d'instantanés
La commande bmctl check cluster --snapshot
accepte deux scénarios. Pour spécifier un scénario, utilisez l'option --scenario
. La liste suivante répertorie les valeurs possibles :
system
: collecter un instantané des composants système, y compris leurs journauxall
: collecter un instantané de tous les pods, y compris leurs journaux
Vous pouvez utiliser chacun des deux scénarios avec un cluster d'administrateur ou un cluster d'utilisateur. Par exemple, pour créer un instantané du cluster d'administrateur en utilisant le scénario system
:
bmctl check cluster --snapshot --snapshot-scenario system \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Pour créer un instantané d'un cluster d'utilisateur en utilisant le scénario all
:
bmctl check cluster --snapshot --snapshot-scenario all \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Effectuer une simulation pour un instantané
Lorsque vous utilisez l'option --snapshot-dry-run
, la commande ne crée pas d'instantané.
Au lieu de cela, elle indique les actions effectuées par la commande d'instantané et génère un fichier de configuration d'instantané. Pour en savoir plus sur le fichier de configuration d'instantané, consultez la page Créer un instantané personnalisé.
Pour exécuter une simulation d'instantané sur votre cluster d'administrateur, saisissez la commande suivante :
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Pour exécuter une simulation d'instantané sur un cluster d'utilisateur, saisissez la commande suivante :
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Instantanés personnalisés
Vous pouvez créer un instantané personnalisé d'un cluster pour les raisons suivantes :
- Pour inclure plus d'informations sur votre cluster que celles fournies dans l'instantané par défaut.
- Pour exclure certaines informations figurant dans l'instantané par défaut.
Créer un instantané personnalisé
La création d'un instantané personnalisé nécessite l'utilisation d'un fichier de configuration d'instantané. Les étapes suivantes expliquent comment créer, modifier et utiliser le fichier de configuration pour créer un instantané personnalisé d'un cluster :
Pour créer un fichier de configuration d'instantané, exécutez la commande suivante sur votre cluster et écrivez le résultat dans un fichier :
bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --kubeconfig KUBECONFIG_PATH
Définissez le type d'informations que vous souhaitez afficher dans votre instantané personnalisé. Pour ce faire, modifiez le fichier de configuration d'instantané que vous avez créé à l'étape 1. Par exemple, si vous souhaitez que l'instantané contienne des informations supplémentaires, telles que la durée d'exécution d'un nœud particulier, ajoutez la commande Linux
uptime
à la section appropriée du fichier de configuration. L'extrait de fichier de configuration suivant montre comment faire en sorte que la commande d'instantané fournisse des informations d'uptime
au sujet du nœud 10.200.0.3. Ces informations n'apparaissent pas dans un instantané standard.... nodeCommands: - nodes: - 10.200.0.3 commands: - uptime ...
Une fois que vous avez modifié le fichier de configuration pour définir le type d'instantané souhaité, créez l'instantané personnalisé en exécutant la commande suivante :
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --kubeconfig KUBECONFIG_PATH
L'option
--snapshot-config
indique à la commandebmctl
d'utiliser le contenu du fichier de configuration de l'instantané pour définir les informations qui apparaissent dans l'instantané.
Le fichier de configuration en détail
L'exemple de fichier de configuration d'instantané suivant affiche les commandes et fichiers standards utilisés pour créer un instantané, mais vous pouvez ajouter des commandes et des fichiers supplémentaires lorsque des informations de diagnostic supplémentaires sont nécessaires :
numOfParallelThreads: 10
excludeWords:
- password
nodeCommands:
- nodes:
- 10.200.0.3
- 10.200.0.4
commands:
- uptime
- df --all --inodes
- ip addr
- ip neigh
- iptables-save --counters
- mount
- ip route list table all
- top -bn1 || true
- docker info || true
- docker ps -a || true
- crictl ps -a || true
- docker ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo docker logs || true
- docker ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo docker logs || true
- crictl ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo crictl logs || true
- crictl ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo crictl logs || true
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
- dmesg
- systemctl status -l docker || true
- journalctl --utc -u docker
- journalctl --utc -u docker-monitor.service
- systemctl status -l kubelet
- journalctl --utc -u kubelet
- journalctl --utc -u kubelet-monitor.service
- journalctl --utc --boot --dmesg
- journalctl --utc -u node-problem-detector
- systemctl status -l containerd || true
- journalctl --utc -u containerd
- systemctl status -l docker.haproxy || true
- journalctl --utc -u docker.haproxy
- systemctl status -l docker.keepalived || true
- journalctl --utc -u docker.keepalived
- systemctl status -l container.haproxy || true
- journalctl --utc -u container.haproxy
- systemctl status -l container.keepalived || true
- journalctl --utc -u container.keepalived
nodeFiles:
- nodes:
- 10.200.0.3
- 10.200.0.4
files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /proc/sys/net/ipv4/conf/all/rp_filter
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service || true
- /etc/systemd/system/containerd.service || true
- /etc/docker/daemon.json || true
- /etc/containerd/config.toml || true
- /etc/systemd/system/container.keepalived.service || true
- /etc/systemd/system/container.haproxy.service || true
- /etc/systemd/system/docker.keepalived.service || true
- /etc/systemd/system/docker.haproxy.service || true
nodeSSHKey: ~/.ssh/id_rsa # path to your ssh key file
Les entrées suivantes de votre fichier de configuration sont probablement différentes de celles apparaissant dans l'exemple de fichier de configuration ci-dessus :
- Les adresses IP des nœuds dans les sections
nodeCommands
etnodeFiles
- Le chemin d'accès au
nodeSSHKey
de votre cluster
Champs du fichier de configuration
Un fichier de configuration d'instantané est au format YAML. Le fichier de configuration inclut les champs suivants :
numOfParallelThreads
: la routine d'instantané exécute généralement de nombreuses commandes. Plusieurs threads parallèles permettent d'assurer une exécution plus rapide de la routine. Nous vous recommandons de définirnumOfParallelThreads
sur10
, comme indiqué dans l'exemple de fichier de configuration précédent. Si vos instantanés prennent trop de temps, augmentez cette valeur.excludeWords
: l'instantané contient une grande quantité de données pour vos nœuds de cluster. UtilisezexcludeWords
pour réduire les risques de sécurité lorsque vous partagez votre instantané. Par exemple, excluezpassword
pour que les chaînes de mot de passe correspondantes ne puissent pas être identifiées.nodeCommands
: cette section spécifie les informations suivantes :nodes
: liste des adresses IP des nœuds de cluster à partir desquels vous souhaitez recueillir des informations. Pour créer un instantané lorsque le cluster d'administrateur n'est pas accessible, spécifiez au moins une adresse IP de nœud.commands
: liste des commandes (et des arguments) à exécuter sur chaque nœud. Le résultat de chaque commande est inclus dans l'instantané.
nodeFiles
: cette section spécifie les informations suivantes :nodes
: liste des adresses IP des nœuds de cluster à partir desquels vous souhaitez collecter des fichiers. Pour créer un instantané lorsque le cluster d'administrateur n'est pas accessible, spécifiez au moins une adresse IP de nœud.files
: liste de fichiers à récupérer à partir de chaque nœud. Lorsque les fichiers spécifiés se trouvent sur un nœud, ils sont inclus dans l'instantané.
nodeSSHKey
: chemin d'accès à votre fichier de clé SSH. Lorsque le cluster d'administrateur est inaccessible, ce champ est obligatoire.
Créer des instantanés en cas d'erreurs particulières
Créer un instantané par défaut lors d'installations ou de mises à niveau bloquées
Lors de l'installation ou de la mise à niveau de clusters d'administrateur, hybrides ou autonomes, bmctl
peut parfois se bloquer à certains points où l'on peut voir les sorties suivantes :
- En attente de la préparation du cluster kubeconfig.
- En attente de la préparation du cluster.
- En attente de la préparation des pools de nœuds.
- En attente de la fin de la mise à niveau.
Si vous rencontrez un problème d'installation ou de mise à niveau bloquée, vous pouvez toutefois prendre un instantané d'un cluster, à l'aide du cluster d'amorçage, en exécutant la commande suivante :
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Créer un instantané personnalisé lors d'installations ou de mises à niveau bloquées
Les étapes suivantes montrent comment créer un instantané personnalisé d'un cluster lorsqu'une installation ou une mise à niveau est bloquée :
Récupérez un fichier de configuration d'instantané du cluster à partir de vos archives.
Modifiez le fichier de configuration de l'instantané de sorte que l'instantané contienne les informations souhaitées.
Créez l'instantané personnalisé en exécutant la commande suivante :
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE --cluster=CLUSTER_NAME --kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Comment créer un instantané personnalisé lorsque le cluster d'administrateur est inaccessible
Lorsque le cluster d'administrateur est inaccessible, vous pouvez prendre un instantané personnalisé du cluster. Les étapes suivantes montrent comment créer un instantané personnalisé d'un cluster lorsque le cluster d'administrateur est inaccessible :
Récupérez un fichier de configuration d'instantané du cluster à partir de vos archives.
Dans la section des nœuds, répertoriez les adresses IP des nœuds pour lesquels vous souhaitez obtenir des informations, mais excluez l'adresse IP du nœud du cluster d'administrateur.
Créez l'instantané personnalisé en exécutant la commande suivante :
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE --cluster=CLUSTER_NAME --kubeconfig=KUBECONFIG_PATH
Collecter les journaux pour les problèmes liés à une entrée ou à Anthos Service Mesh
Les instantanés bmctl
ne contiennent pas d'informations permettant de résoudre les problèmes liés à une entrée ou à Anthos Service Mesh. Pour savoir comment collecter les journaux de diagnostic pertinents, consultez la section Collecter les journaux Anthos Service Mesh dans la documentation d'Anthos Service Mesh.