Cette rubrique explique comment résoudre les problèmes liés aux pods, y compris les procédures de diagnostic et les solutions aux problèmes courants.
Pour effectuer les tâches courantes de dépannage des pods sur la console, telles que l'affichage de l'état d'un pod, des informations de base, de la configuration, des événements et des journaux, l'accès à un conteneur via le terminal et l'activation du diagnostic des pods, consultez Procédures courantes de dépannage.
Procédure de diagnostic rapide
Pour diagnostiquer un pod de charge de travail anormal, accédez à la page de détails des Pods ciblés. Cliquez sur l'onglet Events pour examiner les descriptions des événements anormaux. Ensuite, cliquez sur l'onglet Logs pour vérifier la présence de journaux anormaux récents.
Pod à l'état Pending
Si un pod affiche un statut Unschedulable dans ses Status Details ou si un événement FailedScheduling apparaît dans la section Events, accédez à pour vérifier l'état de santé et les niveaux de ressources (CPU et mémoire) du nœud cible. Vérifiez également si la politique d'affinité du pod est trop stricte, y compris ses configurations nodeSelector, nodeAffinity ainsi que les Taints et Tolérations. Pour approfondir le dépannage, consultez la section Problèmes de planification.
Échec du téléchargement de l'image (ImagePullBackOff/ErrImagePull)
Sur la page de détails des Pods, accédez à l'onglet Container et vérifiez l'adresse de l'Image. Connectez-vous au nœud du pod et exécutez crictl pull <image-address> ou curl -v https://<image-address> pour vérifier la connectivité réseau au référentiel d'images. Dans le coin supérieur droit, cliquez sur Edit YAML et assurez-vous que le Secret spécifié dans le champ spec.imagePullSecrets de la charge de travail existe et est valide. Pour un dépannage plus approfondi, consultez la section problèmes de téléchargement d'images.
Échec du démarrage du pod (CrashLoopBackOff)
Cette erreur se produit lorsqu'une application plante et redémarre de manière répétée. Sur la page de détails des Pods, cliquez sur l'onglet Logs et sélectionnez Show the log of the last container exit pour afficher la cause de l'échec. Pour un dépannage plus approfondi, consultez la section Résolution des échecs de démarrage des pods.
Pod en cours d'exécution mais non prêt
Cet état survient lorsque la sonde de readiness du pod échoue. Sur la page Edit des Workloads ciblées, vérifiez que le chemin de la requête de contrôle de santé (par exemple, /healthz) et le port correspondent à ceux fournis par l'application. Pour un dépannage plus approfondi, consultez la section Le pod est en cours d'exécution mais n'est pas prêt (Ready: False).
Vous pouvez désactiver temporairement le contrôle de santé. Accédez ensuite au terminal du pod ou à son nœud hôte et utilisez une commande telle que curl , pour vérifier que le contrôle de santé réussit.
Pod OOMKilled
Sur la page de détails des Pods, cliquez sur l'onglet Logs et sélectionnez Show the log of the last container exit pour afficher les journaux OOM. Vérifiez si l'application présente une fuite de mémoire ou une erreur d'épuisement de la mémoire (OOM). Pour les applications Java, vous pouvez optimiser le paramètre -Xmx . Ajustez la limite de ressources mémoire de l'application (resources.limits.memory) selon les besoins. Pour un dépannage plus approfondi, consultez la section OOMKilled.
Si une sonde de liveness est configurée, le pod reste brièvement à l'état OOMKilled avant de redémarrer automatiquement.
Flux de travail de diagnostic
Pour diagnostiquer un pod anormal, examinez ses événements, ses journaux et sa configuration.
Phase 1 : Problèmes de planification
Pod non planifié sur un nœud
Si un pod reste à l'état Pending pendant une période prolongée, il n'a pas été planifié sur un nœud. Cette section décrit les causes courantes et les solutions associées.
|
Message d'erreur |
Description |
Solution |
|
|
Le cluster ne dispose d'aucun nœud disponible pour la planification des pods. |
|
|
Aucun nœud disponible dans le cluster ne peut satisfaire les demandes de ressources CPU ou mémoire du pod. Un nœud est considéré comme non planifiable si la somme des
|
Sur la page de détails du cluster cible, accédez à et vérifiez le taux d'allocation des requests de CPU ou de mémoire pour le nœud cible. Vous pouvez survoler le taux d'allocation pour afficher les valeurs spécifiques d'allocation des ressources.
Pour afficher l'utilisation détaillée des ressources des nœuds, consultez la section Utilisation de kubectl pour afficher l'utilisation des ressources des nœuds.
|
|
|
Les nœuds existants dans le cluster ne correspondent pas à la politique d'affinité de nœud ( |
|
|
|
|
|
|
La planification échoue en raison d'un conflit d'affinité de nœud de volume. Cela se produit généralement parce qu'un disque cloud ne peut pas être monté entre différentes zones. |
|
|
|
L'instance ECS ne prend pas en charge le type de disque cloud spécifié. |
Consultez la section Familles d'instances pour confirmer les types de disques cloud pris en charge par votre instance ECS. Lors du montage, mettez à jour le type de disque cloud vers l'un des types pris en charge par l'instance ECS. |
|
|
Le pod ne peut pas être planifié sur un nœud car il ne possède pas de tolération pour l'un des taints du nœud. |
|
|
|
Le nœud ne dispose pas d'un stockage éphémère suffisant. |
|
|
|
Le pod n'a pas réussi à se lier à une revendication de volume persistant (PVC). |
Vérifiez si le PVC ou le PV spécifié par le pod a été créé. Exécutez |
Le pod est planifié mais reste à l'état Pending
Si un pod a été planifié sur un nœud mais reste à l'état Pending , suivez ces étapes pour résoudre le problème.
-
Déterminez si un pod est configuré avec
hostPort: Si un pod est configuré avechostPort, une seule instance de pod utilisant cehostPortpeut s'exécuter sur chaque nœud. Par conséquent, la valeurReplicasdans un Deployment ou un ReplicationController ne peut pas dépasser le nombre de nœuds dans le cluster. Si ce port est utilisé par une autre application, la planification du pod échoue.hostPortintroduit certaines complexités de gestion et de planification. Nous vous recommandons d'utiliser un Service pour accéder aux pods. Pour plus d'informations, consultez la section Service. -
Si le pod n'est pas configuré avec
hostPort, suivez les étapes ci-dessous pour le dépannage.Exécutez
kubectl describe pod <pod-name>pour afficher les événements du pod et résoudre tous les problèmes identifiés. Les événements peuvent expliquer pourquoi le pod n'a pas réussi à démarrer, les raisons courantes incluant des échecs de téléchargement d'images, des ressources insuffisantes, des restrictions de politique de sécurité ou des erreurs de configuration.Si l'objet Event ne contient aucune information utile, vérifiez les journaux kubelet sur le nœud pour résoudre les problèmes survenus lors du processus de démarrage du pod. Vous pouvez utiliser la commande
grep -i <pod name> /var/log/messages* | lesspour rechercher dans le fichier journal système (/var/log/messages*) les entrées de journal contenant le nom du pod spécifié.
Étape 2 : Problèmes de téléchargement d'images
ImagePullBackOff ou ErrImagePull
Un statut de pod indiquant ImagePullBackOff ou ErrImagePull signale l'échec du téléchargement de l'image. Dans ce cas, examinez les événements du pod et utilisez les informations ci-dessous pour résoudre le problème.
|
Message d'erreur |
Description |
Solution suggérée |
|
|
L'accès au registre d'images est refusé car aucun |
Vérifiez que le Secret indiqué dans le champ Avec Container Registry (ACR), vous pouvez utiliser un assistant d'identification pour télécharger des images sans mot de passe. Pour plus d'informations, consultez la section Télécharger des images depuis le même compte. |
|
|
L'adresse du registre d'images n'a pas pu être résolue lors du téléchargement d'une image via HTTPS. |
|
|
|
L'espace disque sur le nœud est insuffisant. |
Connectez-vous au nœud où s'exécute le pod (pour plus d'informations, consultez la section Choisir une méthode de connexion à distance ECS) et exécutez la commande |
|
|
Le registre d'images tiers utilise un certificat signé par une autorité de certification (CA) inconnue ou non sécurisée. |
|
|
|
L'opération a été annulée, probablement parce que le fichier image est trop volumineux. Kubernetes applique un délai d'expiration par défaut pour le téléchargement d'images. Si le téléchargement ne progresse pas pendant une période donnée, Kubernetes considère que l'opération a échoué ou ne répond pas et annule la tâche. |
|
|
|
Impossible de se connecter au registre d'images en raison de problèmes réseau. |
|
|
|
Délai d'expiration de la connexion en raison de problèmes réseau lors du téléchargement d'une image depuis un registre situé à l'étranger. |
Le téléchargement d'images depuis des registres situés à l'étranger, tels que Docker Hub, peut échouer dans les clusters ACK en raison de l'instabilité des réseaux des opérateurs. Pour résoudre ce problème, envisagez les solutions suivantes :
|
|
|
Docker Hub impose des limites de débit sur les requêtes de téléchargement d'images. |
Téléchargez l'image vers Container Registry (ACR) et téléchargez-la depuis un registre d'images ACR. |
|
Le statut |
Le mécanisme de limitation du débit de téléchargement d'images de kubelet a peut-être été déclenché. |
Ajustez les paramètres |
Étape 3 : Problèmes de démarrage
Le pod est dans l'état Init
|
Message d'erreur |
Description |
Solution |
|
Bloqué dans l'état |
Le pod contient M conteneurs d'initialisation. N d'entre eux sont terminés, mais les M-N conteneurs d'initialisation restants n'ont pas pu démarrer. |
Pour plus d'informations sur les conteneurs d'initialisation, consultez la section Déboguer les conteneurs d'initialisation. |
|
Bloqué dans l'état |
Un conteneur d'initialisation du pod n'a pas pu démarrer. |
|
|
Bloqué dans l'état |
Un conteneur d'initialisation du pod n'a pas pu démarrer et se trouve dans une boucle de redémarrage. |
Le pod est dans l'état Creating
|
Message d'erreur |
Description |
Solution |
|
|
Ce comportement est attendu en raison de la conception du plugin réseau Flannel. |
Mettez à niveau le composant Flannel vers la version v0.15.1.11-7e95fe23-aliyun ou ultérieure. Pour plus d'informations, consultez la section Flannel. |
|
Dans les clusters exécutant une version de Kubernetes antérieure à la 1.20, une fuite d'adresses IP peut se produire si un pod redémarre à plusieurs reprises ou si les pods d'un CronJob terminent leurs tâches et quittent rapidement. |
Mettez à niveau le cluster vers Kubernetes 1.20 ou une version ultérieure. Nous vous recommandons d'utiliser la dernière version du cluster. Pour plus d'informations, consultez la section Mettre à niveau manuellement un cluster. |
|
|
Des défauts dans containerd et runC provoquent ce problème. |
Pour un correctif d'urgence, consultez la section Pourquoi mon pod ne démarre-t-il pas avec l'erreur « no IP addresses available in range » ? |
|
|
|
Le plugin réseau Terway maintient une base de données interne sur le nœud pour suivre et gérer les elastic network interfaces (ENI). Cette erreur se produit lorsque l'état de la base de données est incohérent avec la configuration réelle du périphérique réseau, ce qui entraîne l'échec de l'allocation ENI. |
|
|
Le plugin réseau Terway n'a peut-être pas réussi à demander une adresse IP au vSwitch. |
|
Échec du démarrage du pod (CrashLoopBackOff)
|
Message d'erreur |
Description |
Solution |
|
Le journal contient |
|
|
|
Les événements du pod affichent |
La sonde de vivacité a échoué, ce qui a entraîné le redémarrage de l'application. |
|
|
Les événements du pod affichent |
La sonde de démarrage a échoué, ce qui a entraîné le redémarrage de l'application. |
|
|
Le journal du pod contient |
Espace disque cloud insuffisant. |
|
|
Échec du démarrage sans information d'événement. |
Ce problème survient lorsqu'un conteneur nécessite plus de ressources que ses limites déclarées, ce qui entraîne son échec. |
Vérifiez si la configuration des ressources du pod est correcte. Vous pouvez activer le profilage des ressources pour obtenir les configurations Request et Limit recommandées pour le conteneur. |
|
Le journal du pod affiche |
Un conflit de port existe entre les conteneurs du même pod. |
|
|
Le journal du pod affiche |
Le workload monte un Secret, mais la valeur dans le Secret n'est pas encodée en Base64. |
|
|
Problème spécifique à l'application. |
Examinez les journaux du pod pour résoudre le problème. |
|
Le pod est en cours d'exécution mais n'est pas prêt (Ready: False)
|
Message d'erreur |
Description |
Solution |
|
|
La sonde de disponibilité a échoué, empêchant le pod cible de recevoir du trafic. |
|
|
Le statut du pod est identique à celui ci-dessus. Les événements du pod affichent |
L'échec d'une sonde de démarrage entraîne le redémarrage du conteneur. Cette erreur ne devrait pas aboutir à un état Running/NotReady persistant, mais plutôt à un état « CrashLoopBackOff ». |
Résolvez ce problème comme décrit dans la section « Échec du démarrage du pod (CrashLoopBackOff) » pour les sondes Startup. |
Phase 4 : Problèmes d'exécution des Pods
OOMKilled
Lorsqu'un conteneur de votre cluster utilise plus de mémoire que la limite spécifiée, il peut être arrêté en raison d'une erreur de manque de mémoire (OOM), ce qui entraîne une sortie inattendue du conteneur. Pour plus d'informations sur les événements OOM, consultez Assign Memory Resources to Containers and Pods.
Si le processus arrêté est le processus principal du conteneur, celui-ci risque de redémarrer de manière inattendue.
En cas d'événement OOM, celui-ci apparaît dans l'onglet Events de la page des détails du Pod dans la console, par exemple sous la forme
pod was OOM killed. node:XXX pod:XXX namespace:XXX.Si vous configurez une alerte pour les exceptions de réplicas de conteneurs dans le cluster, vous recevrez une notification lors d'un événement OOM. Pour plus d'informations, consultez Container replica exception alert rule set.
|
Niveau OOM |
Description |
Solution recommandée |
|
Niveau du système d'exploitation |
Consultez le journal du noyau situé à l'emplacement |
|
|
Niveau cgroup |
Consultez le journal du noyau situé à l'emplacement |
|
Pour plus d'informations sur les causes et les solutions relatives aux événements OOM, consultez Causes and solutions for OOM Killer.
Terminating
|
Cause possible |
Description |
Solution recommandée |
|
Le nœud est dans l'état NotReady. |
Le Pod est automatiquement supprimé une fois que le nœud quitte l'état NotReady. |
|
|
Le Pod est configuré avec des finalizers. |
Si un Pod est configuré avec des finalizers, Kubernetes exécute les opérations de nettoyage spécifiées par ces finalizers avant de supprimer le Pod. Si une opération de nettoyage ne répond pas, le Pod reste dans l'état Terminating. |
Exécutez la commande |
|
Le hook preStop du Pod est invalide ou bloqué. |
Si un hook preStop est configuré pour le Pod, Kubernetes l'exécute avant d'arrêter le conteneur. Le Pod reste dans l'état Terminating tant que le hook est en cours d'exécution. |
Exécutez la commande |
|
Une période d'arrêt gracieux est configurée pour le Pod. |
Si une période d'arrêt gracieux ( |
Kubernetes supprime automatiquement le Pod une fois que le conteneur a effectué un arrêt gracieux. |
|
Le conteneur ne répond pas. |
Lorsque vous demandez l'arrêt ou la suppression d'un Pod, Kubernetes envoie un signal |
|
Evicted
|
Cause possible |
Description |
Solution recommandée |
|
Le nœud subit une pression liée aux ressources, telles que l'utilisation de la mémoire ou du disque. |
Le nœud peut connaître une pression mémoire, une pression disque ou une pression PID.
|
|
|
Une éviction inattendue se produit. |
Un taint NoExecute ajouté manuellement sur le nœud du Pod a provoqué une éviction inattendue. |
Exécutez la commande |
|
L'éviction ne se déroule pas comme prévu. |
|
Dans un petit cluster (50 nœuds ou moins), si plus de 55 % des nœuds tombent en panne, l'éviction des Pods s'arrête. Pour plus d'informations, consultez Rate limits on eviction. |
|
Dans un grand cluster (plus de 50 nœuds), si la fraction de nœuds non sains dépasse le seuil |
||
|
Un Pod est fréquemment replanifié sur son nœud d'origine après avoir été évacué. |
Le kubelet évacue les Pods en fonction de l'utilisation réelle des ressources, tandis que le planificateur place les Pods en fonction des demandes de ressources. Comme une éviction libère des ressources, le planificateur peut replanifier un Pod sur le même nœud si ses demandes tiennent toujours dans les ressources disponibles. |
Assurez-vous que les demandes de ressources du Pod sont adaptées aux ressources allouables du nœud et ajustez-les si nécessaire. Pour plus d'informations, consultez Set CPU and memory resources for a container. Vous pouvez également activer le resource profiling pour obtenir des configurations recommandées pour les demandes et les limites de vos conteneurs. |
Completed
Lorsqu'un Pod est dans l'état Completed, tous ses conteneurs ont terminé l'exécution de leurs commandes et se sont arrêtés avec succès. Cet état est courant pour les charges de travail telles que les jobs et les conteneurs d'initialisation.
FAQ
Le Pod est en cours d'exécution mais ne fonctionne pas
Des erreurs dans le fichier YAML de votre application peuvent entraîner le passage d'un Pod à l'état Running sans qu'il ne fonctionne correctement.
Vérifiez les paramètres du conteneur dans la configuration du Pod.
-
Utilisez les méthodes suivantes pour vérifier les erreurs d'orthographe dans votre configuration YAML.
Lors de la création d'un Pod, si une clé du fichier YAML est mal orthographiée (par exemple,
commandécritcommnd), le cluster ignore l'erreur et crée la ressource avec succès. Cependant, le système ne peut pas exécuter la commande spécifiée dans le fichier YAML pendant l'exécution du conteneur.L'exemple suivant, où
commandest mal orthographié encommnd, décrit comment résoudre les problèmes d'orthographe.-
Ajoutez l'indicateur
--validateà la commandekubectl apply -f, puis exécutez la commandekubectl apply --validate -f XXX.yaml.Si vous faites une faute d'orthographe, une erreur est signalée :
XXX] unknown field: commnd XXX] this may be a false alarm, see https://gXXXb.XXX/6842pods/test. -
Exécutez la commande suivante et comparez la sortie
pod.yamlavec le fichier YAML original utilisé pour créer le Pod.Remarque[$Pod]correspond au nom du Pod anormal, que vous pouvez obtenir en exécutant la commandekubectl get pods.kubectl get pods [$Pod] -o yaml > pod.yamlSi le fichier
pod.yamlcontient plus de lignes que le fichier original, cela signifie que le Pod a été créé comme prévu et que le cluster a ajouté des valeurs par défaut.Si des lignes de votre fichier YAML original sont manquantes dans
pod.yaml, cela indique une erreur d'orthographe dans votre fichier original.
-
Consultez les journaux du Pod pour diagnostiquer le problème.
Accédez au conteneur via un terminal et vérifiez que les fichiers locaux du conteneur sont conformes aux attentes.
Vérifier l'utilisation des ressources des nœuds avec kubectl
-
Vérifiez l'utilisation du CPU et de la mémoire de tous les nœuds du cluster.
kubectl describe nodes | awk '/^Name:/{print "\n"$2} /Resource +Requests +Limits/{print $0} /^[ \t]+cpu.*%/{print $0} /^[ \t]+memory.*%/{print $0}'Sortie attendue :
cn-hangzhou.192.168.0.xxx Resource Requests Limits cpu 1725m (44%) 10320m (263%) memory 1750Mi (11%) 16044Mi (109%) cn-hangzhou.192.168.16.xxx Resource Requests Limits cpu 1885m (48%) 16820m (429%) memory 2536Mi (17%) 25760Mi (179%)Un nœud dont l'utilisation des demandes est élevée peut ne pas être en mesure de satisfaire les
requestsd'un nouveau Pod, empêchant ainsi sa planification. -
Remplacez
YOUR_NODE_NAMEpar le nom réel du nœud pour afficher l'utilisation des ressources de tous les Pods sur le nœud.Sortie attendue :
Non-terminated Pods: (11 in total) Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age --------- ---- ------------ ---------- --------------- ------------- --- arms-prom node-exporter-gp95p 20m (0%) 1020m (26%) 160Mi (1%) 1152Mi (7%) 6d21h csdr csdr-velero-77c8bbc9c7-w46lq 500m (12%) 1 (25%) 128Mi (0%) 2Gi (13%) 6d19h kube-system ack-cost-exporter-5b647ffc65-zdrsl 100m (2%) 1 (25%) 200Mi (1%) 1Gi (6%) 6d21h kube-system ack-node-local-dns-admission-controller-5dfd74f5f4-9rl6n 100m (2%) 1 (25%) 100Mi (0%) 1Gi (6%) 6d21h kube-system ack-node-problem-detector-daemonset-6wql2 200m (5%) 1200m (30%) 300Mi (2%) 1324Mi (9%) 6d21h kube-system coredns-7784559f6-dr9sn 100m (2%) 0 (0%) 100Mi (0%) 2Gi (13%) 6d21h kube-system csi-plugin-knz7j 130m (3%) 2 (51%) 176Mi (1%) 4Gi (27%) 6d21h kube-system kube-proxy-worker-rkbzv 100m (2%) 0 (0%) 100Mi (0%) 0 (0%) 6d21h kube-system loongcollector-ds-kw7cj 100m (2%) 2 (51%) 256Mi (1%) 2Gi (13%) 6d21h kube-system node-local-dns-pgzcn 25m (0%) 0 (0%) 30Mi (0%) 1Gi (6%) 6d21h kube-system terway-eniip-lnn8n 350m (8%) 1100m (28%) 200Mi (1%) 256Mi (1%) 6d21hVous pouvez ajuster la configuration des
requestsen fonction de la consommation réelle des ressources.
Déconnexions réseau intermittentes des Pods vers les bases de données
Si un Pod de votre cluster ACK se déconnecte de manière intermittente d'une base de données, suivez les étapes ci-dessous pour diagnostiquer le problème.
1. Vérifier le Pod
Vérifiez les événements du Pod pour détecter des signes d'instabilité de la connexion, tels que des problèmes réseau, des redémarrages ou des ressources insuffisantes.
Consultez les journaux du Pod pour repérer les messages d'erreur liés à la connexion à la base de données, tels que des délais d'expiration, des échecs d'authentification ou des déclencheurs de reconnexion.
Surveillez l'utilisation du CPU et de la mémoire du Pod afin de vous assurer que l'épuisement des ressources ne provoque pas le plantage de l'application ou du pilote de base de données.
Vérifiez les
requestset leslimitsde ressources du Pod pour vous assurer qu'il dispose de suffisamment de CPU et de mémoire.
2. Vérifier le nœud
Vérifiez l'utilisation des ressources du nœud pour détecter d'éventuelles pénuries de mémoire, d'espace disque ou d'autres ressources. Pour plus d'informations, consultez Monitor nodes.
Testez la présence de perturbations réseau intermittentes entre le nœud et la base de données cible.
3. Vérifier la base de données
Vérifiez l'état et les métriques de performance de la base de données pour détecter d'éventuels redémarrages ou goulots d'étranglement.
Examinez le nombre de connexions anormales et les paramètres de délai d'expiration des connexions, et ajustez-les selon les besoins de votre application.
Inspectez les journaux de la base de données pour rechercher des enregistrements liés aux déconnexions.
4. Vérifier l'état des composants du cluster
Des composants de cluster défectueux peuvent perturber la communication réseau d'un Pod.
kubectl get pod -n kube-system # Check the status of component pods.
Vérifiez également les composants réseau suivants :
CoreDNS : Vérifiez l'état et les journaux du composant pour vous assurer que le Pod peut résoudre correctement l'adresse du service de base de données.
Flannel : Vérifiez l'état et les journaux du composant kube-flannel.
Terway : Vérifiez l'état et les journaux du composant terway-eniip.
5. Analyser le trafic réseau
Vous pouvez utiliser tcpdump pour capturer les paquets et analyser le trafic réseau afin d'identifier la cause du problème.
-
Obtenez les informations sur le Pod et le nœud :
Exécutez la commande suivante pour obtenir des informations sur les Pods d'un namespace spécifique et sur les nœuds sur lesquels ils s'exécutent :
kubectl get pod -n [namespace] -o wide -
Connectez-vous au nœud cible et exécutez les commandes suivantes pour trouver le PID du conteneur.
Containerd
-
Exécutez la commande suivante pour afficher le
CONTAINERdu conteneur.crictl ps |grep <Pod name keyword>Sortie attendue :
CONTAINER IMAGE CREATED STATE a1a214d2***** 35d28df4***** 2 days ago Running -
Exécutez la commande suivante avec le paramètre
CONTAINER IDpour afficher le PID du conteneur.crictl inspect a1a214d2***** |grep -i PIDSortie attendue :
"pid": 2309838, # The PID of the target container. "pid": 1 "type": "pid"
Docker
-
Exécutez la commande suivante pour afficher l'
CONTAINER IDdu conteneur.docker ps |grep <pod name keyword>Sortie attendue :
CONTAINER ID IMAGE COMMAND a1a214d2***** 35d28df4***** "/nginx -
Exécutez la commande suivante avec le paramètre
CONTAINER IDpour afficher le PID du conteneur.docker inspect a1a214d2***** |grep -i PIDSortie attendue :
"Pid": 2309838, # The PID of the target container. "PidMode": "", "PidsLimit": null,
-
-
Exécutez les commandes de capture de paquets.
Utilisez le PID du conteneur pour exécuter la commande suivante et capturer les paquets réseau entre le Pod et la base de données cible.
nsenter -t <container PID> tcpdump -i any -n -s 0 tcp and host <database IP address>Utilisez le PID du conteneur pour exécuter la commande suivante et capturer les paquets réseau entre le Pod et l'hôte.
nsenter -t <container PID> tcpdump -i any -n -s 0 tcp and host <node IP address>Exécutez la commande suivante pour capturer les paquets réseau entre l'hôte et la base de données.
tcpdump -i any -n -s 0 tcp and host <database IP address>
6. Optimiser l'application
Implémentez un mécanisme de reconnexion automatique dans votre application afin qu'elle puisse restaurer les connexions automatiquement lors d'un basculement ou d'une migration de la base de données.
Utilisez des connexions persistantes plutôt que des connexions éphémères pour communiquer avec la base de données. Les connexions persistantes peuvent réduire considérablement la surcharge des performances et la consommation de ressources, améliorant ainsi l'efficacité globale du système.
Dépannage via la console
Connectez-vous à la console ACK et accédez à la page des détails de votre cluster pour résoudre les problèmes liés aux Pods.
|
Actions |
Console |
|
Vérifier l'état d'un Pod |
|
|
Vérifier les informations de base d'un Pod |
|
|
Vérifier la configuration d'un Pod |
|
|
Vérifier les événements d'un Pod |
|
|
Afficher les journaux d'un Pod |
Remarque
Les clusters ACK sont intégrés à Simple Log Service (SLS). Vous pouvez activer SLS dans votre cluster pour collecter rapidement les journaux des conteneurs. Pour plus d'informations, consultez Collect container logs from an ACK cluster. |
|
Vérifier les données de surveillance d'un Pod |
Remarque
Les clusters ACK sont intégrés à Managed Service for Prometheus. Vous pouvez activer rapidement Managed Service for Prometheus pour votre cluster afin de surveiller en temps réel l'état de santé de votre cluster et de vos conteneurs, et afficher les tableaux de bord Grafana. Pour plus d'informations, consultez Connect to and configure Managed Service for Prometheus. |
|
Utiliser un terminal pour accéder à un conteneur et afficher les fichiers locaux |
|
|
Exécuter le diagnostic du Pod |
Remarque
Container Intelligent Service propose une fonction de diagnostic en un clic pour vous aider à identifier les problèmes dans votre cluster. Pour plus d'informations, consultez Use cluster diagnostics. |
Suppression inattendue de Pods
Lorsqu'un cluster contient un grand nombre de Pods avec le statut Completed, le gestionnaire de contrôleur kube-controller-manager (KCM) effectue un garbage collection pour éviter la dégradation des performances de ses contrôleurs. Ce nettoyage se produit lorsque le nombre de Pods terminés dépasse le seuil par défaut de 12 500. Le paramètre --terminated-pod-gc-threshold permet de configurer ce seuil. Pour plus d'informations, consultez la documentation communautaire KCM parameter documentation.
Recommandation : Nettoyez régulièrement les Pods avec le statut Completed dans votre cluster pour éviter qu'ils n'affectent l'efficacité des contrôleurs.

> Containerd Configuration.
Les événements du pod affichent