Dépannage des problèmes liés au serveur de métriques dans les clusters d' Kubernetes

Découvrez comment déboguer et résoudre les problèmes courants liés au serveur de métriques de votre cluster Kubernetes, notamment les symptômes, les causes et la procédure étape par étape.

Cloud privé virtuel Infrastructure classique

Les symptômes suivants peuvent indiquer la nécessité d'ajuster les ressources metrics-server :

  • metrics-server redémarre fréquemment.

  • La suppression d'un espace de nom dans l'espace de nom bloqué dans l'état Terminating et kubectl describe namespace inclut une condition signalant une erreur de reconnaissance d'API de mesure.

  • kubectl top pods, kubectl top nodes, d'autres commandes kubectl ou les applications qui utilisent l'API Kubernetes pour consigner les erreurs Kubernetes telles que :

    The server is currently unable to handle the request (get pods.metrics.k8s.io)
    
    Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request
    
  • HorizontalPodAutoscalers (HPA) ne mettent pas à l'échelle les déploiements.

  • L'exécution de kubectl get apiservices v1beta1.metrics.k8s.io produit un statut tel que :

    NAME                     SERVICE                      AVAILABLE                      AGE
    v1beta1.metrics.k8s.io   kube-system/metrics-server   False (FailedDiscoveryCheck)   139d
    

Votre cluster dispose d'un service de mesures fourni par le déploiement metrics-server dans l'espace de nom kube-system. Les demandes et les limites de ressources metrics-server sont basées sur le nombre de nœuds du cluster et sont optimisées pour les clusters avec 30 pods ou moins par nœud worker. Si les demandes de mémoire sont trop basses, elles peuvent échouer avec des erreurs de mémoire insuffisante et peuvent répondre très lentement. Si les demandes de l'unité centrale sont trop basses, cela peut entraîner l'échec des sondes de disponibilité et de vivalité en raison de la régulation de l'unité centrale.

Les problèmes liés à metrics-server peuvent être également à l'origine de problèmes dans d'autres domaines. Les API de métriques ne sont pas disponibles si le plan de contrôle ne parvient pas à communiquer avec le serveur de métriques via Konnectivity. Les points d'ancrage de contrôle d'admission peuvent empêcher le plan de contrôle de créer des poods, y compris le pod metrics-server.

Procédez comme suit pour identifier et résoudre les incidents.

  1. Vérifiez que les pods de serveur de mesures existent.

    kubectl get pod -n kube-system -l k8s-app=metrics-server
    

    Si aucun pod n'est répertorié, cela implique qu'il existe probablement un problème au niveau d'une webhook admission-control. Voir Pourquoi les opérations de cluster échouent en raison d'un webhook rompu ?.

  2. Vérifiez que le serveur d'api peut se connecter à metrics-server.

    kubectl logs POD -n kube-system -c metrics-server --tail 5
    

    Remplacez POD par le nom de pod indiqué précédemment. Le contenu de tous les journaux renvoyés n'a pas d'importance.

    Si vous obtenez un message d'erreur contenant du texte tel que <workerIP>:10250: getsockopt: connection timed out, voir kubectlExpiration des commandes.

  3. Si les étapes précédentes ne présentent pas d'incident, ajustez les ressources pour metrics-server. Voir Ajustement des ressources du fournisseur de mesures de cluster.