Résoudre les problèmes d'observabilité de GKE sur Bare Metal

Ce document vous aide à résoudre les problèmes d'observabilité dans GKE sur Bare Metal. Si vous rencontrez l'un de ces problèmes, consultez les corrections et solutions proposées.

Si vous avez besoin d'une aide supplémentaire, contactez l'assistance Google.

Cloud Audit Logs ne sont pas collectés

Les journaux d'audit Cloud sont activés par défaut, sauf si un indicateur disableCloudAuditLogging est défini dans la section clusterOperations de la configuration du cluster.

Si les journaux d'audit Cloud sont activés, les autorisations sont la raison la plus courante pour laquelle les journaux ne sont pas collectés. Dans ce scénario, les messages d'erreur d'autorisation refusée sont affichés dans le conteneur de proxy Cloud Audit Logs.

Le conteneur du proxy Cloud Audit Logs s'exécute en tant que DaemonSet dans tous les clusters GKE sur Bare Metal.

Si des erreurs d'autorisation s'affichent, suivez la procédure de dépannage et de résolution des problèmes d'autorisation.

kube-state-metrics métriques ne sont pas collectées

kube-state-metrics (KSM) s'exécute en tant que déploiement à instance répliquée unique dans le cluster et génère des métriques sur presque toutes les ressources du cluster. Lorsque KSM et le gke-metrics-agent s'exécutent sur le même nœud, le risque d'indisponibilité des agents de métriques sur tous les nœuds est plus élevé.

Les noms des métriques KSM suivent le modèle kube_<ResourceKind>, comme kube_pod_container_info. Les métriques commençant par kube_onpremusercluster_ proviennent du contrôleur de cluster sur site, et non de KSM.

S'il manque des métriques KSM, consultez les étapes de dépannage suivantes:

  • Dans Cloud Monitoring, vérifiez le nombre de processeurs, la mémoire et le nombre de redémarrages de KSM à l'aide des métriques récapitulatives de l'API telles que kubernetes.io/anthos/container/... . Il s'agit d'un pipeline distinct avec KSM. Vérifiez que le pod KSM n'est pas limité par des ressources insuffisantes.
    • Si ces métriques d'API récapitulatives ne sont pas disponibles pour KSM, gke-metrics-agent sur le même nœud rencontre probablement le même problème.
  • Dans le cluster, vérifiez l'état et les journaux du pod KSM et du pod gke-metrics-agent sur le même nœud avec KSM.

kube-state-metrics : plantage en boucle

Symptôme

Aucune métrique provenant de kube-state-metrics (KSM) n'est disponible depuis Cloud Monitoring.

Cause

Ce scénario est plus susceptible de se produire dans les clusters volumineux ou ceux disposant de grandes quantités de ressources. KSM s'exécute comme un déploiement avec une seule instance répliquée et répertorie presque toutes les ressources du cluster, telles que les pods, les déploiements, les DaemonSets, les ConfigMaps, les secrets et les PersistentVolumes. Des métriques sont générées sur chacun de ces objets de ressource. Si l'une des ressources contient de nombreux objets, par exemple un cluster avec plus de 10 000 pods, KSM risque de manquer de mémoire.

Versions concernées

Ce problème peut se produire dans n'importe quelle version de GKE sur Bare Metal.

La limite de processeur et de mémoire par défaut a été augmentée dans les dernières versions de GKE sur Bare Metal. Ces problèmes de ressources devraient donc être moins courants.

Solution

Pour vérifier si votre problème est dû à des problèmes de mémoire insuffisante, procédez comme suit:

  • Utilisez kubectl describe pod ou kubectl get pod -o yaml, puis vérifiez le message d'état d'erreur.
  • Vérifiez les métriques d'utilisation et d'utilisation de la mémoire pour KSM, et vérifiez si la limite est atteinte avant de redémarrer.

Si vous confirmez que des problèmes de mémoire insuffisante sont à l'origine du problème, optez pour l'une des solutions suivantes:

  • Augmentez la demande et la limite de mémoire pour KSM.

    Pour ajuster le processeur et la mémoire de KSM, utilisez la valeur resourceOverride de la ressource personnalisée Stackdriver pour kube-state-metrics.

  • Réduisez le nombre de métriques de KSM.

    Pour GKE sur Bare Metal 1.13, KSM n'expose qu'un plus petit nombre de métriques appelées métriques principales par défaut. Ce comportement signifie que l'utilisation des ressources est inférieure à celle des versions précédentes, mais la même procédure peut être suivie pour réduire davantage le nombre de métriques KSM.

    Pour les versions de GKE sur Bare Metal antérieures à la version 1.13, KSM utilise les options par défaut. Cette configuration expose un grand nombre de métriques.

gke-metrics-agent : plantage en boucle

Si gke-metrics-agent ne rencontre que des problèmes de mémoire insuffisante sur le nœud où kube-state-metrics existe, la cause est un grand nombre de métriques kube-state-metrics. Pour atténuer ce problème, réduisez la capacité de stackdriver-operator et modifiez KSM afin d'exposer un petit ensemble de métriques nécessaires, comme indiqué dans la section précédente. N'oubliez pas d'effectuer un scaling à la hausse de stackdriver-operator après la mise à niveau du cluster vers GKE sur Bare Metal 1.13, où KSM expose par défaut un plus petit nombre de métriques principales.

Pour les problèmes non liés à des événements de saturation de la mémoire, consultez les journaux des pods de gke-metric-agent. Vous pouvez ajuster les processeurs et la mémoire de tous les pods gke-metrics-agent en ajoutant le champ resourceAttrOverride à la ressource personnalisée Stackdriver.

stackdriver-metadata-agent : plantage en boucle

Symptôme

Aucun libellé de métadonnées système n'est disponible lors du filtrage des métriques dans Cloud Monitoring.

Cause

Le cas le plus courant de plantage en boucle de stackdriver-metadata-agent est dû à des événements de mémoire insuffisante. Cet événement est semblable à kube-state-metrics. Bien que stackdriver-metadata-agent ne répertorie pas toutes les ressources, il répertorie toujours tous les objets pour les types de ressources pertinents tels que les pods, les déploiements et l'objet NetworkPolicy. L'agent s'exécute en tant que déploiement à instance répliquée unique, ce qui augmente le risque d'événements de mémoire insuffisante si le nombre d'objets est trop élevé.

Version concernée

Ce problème peut se produire dans n'importe quelle version de GKE sur Bare Metal.

La limite de processeur et de mémoire par défaut a été augmentée dans les dernières versions de GKE sur Bare Metal. Ces problèmes de ressources devraient donc être moins courants.

Solution

Pour vérifier si votre problème est dû à des problèmes de mémoire insuffisante, procédez comme suit:

  • Utilisez kubectl describe pod ou kubectl get pod -o yaml, puis vérifiez le message d'état d'erreur.
  • Vérifiez la métrique d'utilisation et d'utilisation de la mémoire pour stackdriver-metadata-agent, et vérifiez si elle atteint la limite avant de redémarrer.
Si vous confirmez que des problèmes de mémoire insuffisante en sont la cause, augmentez la limite de mémoire dans le champ resourceAttrOverride de la ressource personnalisée Stackdriver.

metrics-server : plantage en boucle

Symptôme

L'autoscaler horizontal de pods et kubectl top ne fonctionnent pas dans votre cluster.

Cause et versions concernées

Ce problème n'est pas très courant, mais il est causé par des erreurs de mémoire insuffisante dans les grands clusters ou dans les clusters avec une densité de pods élevée.

Ce problème peut se produire dans n'importe quelle version de GKE sur Bare Metal.

Solution

Augmentez les limites de ressources du serveur de métriques. Dans GKE sur Bare Metal 1.13 et versions ultérieures, l'espace de noms de metrics-server et sa configuration ont été déplacés de kube-system vers gke-managed-metrics-server.

Pour GKE sur Bare Metal, la modification de la configuration du service de baby-sitting serait annulée en cas de mise à jour ou de mise à niveau du cluster. Vous devrez appliquer à nouveau vos modifications de configuration. Pour contourner cette limitation, effectuez un scaling à la baisse de metrics-server-operator et modifiez manuellement le pod metrics-server.

Étapes suivantes

Si vous avez besoin d'une aide supplémentaire, contactez l'assistance Google.