Ce document vous aide à résoudre les problèmes d'observabilité dans Google Distributed Cloud. Si vous rencontrez l'un de ces problèmes, consultez les solutions et les solutions de contournement suggérées.
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.
Vous pouvez également consulter la page Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris les suivantes:
- Conditions requises pour ouvrir une demande d'assistance.
- Des outils pour vous aider à résoudre les problèmes, tels que les journaux et les métriques.
- Composants, versions et fonctionnalités compatibles de Google Distributed Cloud pour VMware (logiciel uniquement).
Les journaux d'audit Cloud ne sont pas collectés
Vérifiez que Cloud Audit Logs est activé dans la sectioncloudAuditLogging
de la configuration du cluster. Vérifiez que l'ID du projet, l'emplacement et la clé du compte de service sont correctement configurés. L'ID de projet doit être identique à celui indiqué sous gkeConnect
.
Si Cloud Audit Logs est activé, les autorisations sont la raison la plus courante pour laquelle les journaux ne sont pas collectés. Dans ce scénario, des messages d'erreur d'autorisation refusée s'affichent dans le conteneur proxy Cloud Audit Logs.
Le conteneur proxy Cloud Audit Logs s'exécute de l'une des manières suivantes :- Pod statique dans le cluster d'administrateur ou autonome.
- En tant que conteneur sidecar dans le pod
kube-apiserver
.
Si des erreurs d'autorisation s'affichent, suivez la procédure de dépannage et de résolution des problèmes d'autorisation.
Il est également possible que votre projet ait atteint la limite de comptes de service compatibles. Pour en savoir plus, consultez Fuite du compte de service des journaux d'audit Cloud.
Les métriques kube-state-metrics
ne sont pas collectées
kube-state-metrics
(KSM) s'exécute en tant que déploiement d'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 gke-metrics-agent
s'exécutent sur le même nœud, le risque d'indisponibilité est plus élevé parmi les agents de métriques sur tous les nœuds.
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 du KSM.
Si les métriques KSM sont manquantes, consultez les étapes de dépannage suivantes :
- Dans Cloud Monitoring, vérifiez le nombre de processeurs, de mémoire et de redémarrages de KSM à l'aide des métriques d'API récapitulatives 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 un manque de ressources.- Si ces métriques d'API récapitulatives ne sont pas disponibles pour KSM,
gke-metrics-agent
sur le même nœud présente probablement le même problème.
- Si ces métriques d'API récapitulatives ne sont pas disponibles pour KSM,
- 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.
Boucle de plantage kube-state-metrics
Symptôme
Aucune métrique de kube-state-metrics
(KSM) n'est disponible dans Cloud Monitoring.
Cause
Ce scénario est plus susceptible de se produire dans les grands clusters ou les clusters disposant de grandes quantités de ressources. KSM s'exécute en tant que déploiement à instance répliquée unique 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 pour chacun de ces objets de ressources. Si l'une des ressources comporte de nombreux objets, comme 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 Google Distributed Cloud.
La limite de processeur et de mémoire par défaut a été augmentée dans les dernières versions de Google Distributed Cloud. Par conséquent, ces problèmes de ressources devraient être moins courants.
Correction et solution de contournement
Pour vérifier si votre problème est dû à des problèmes de mémoire saturée, procédez comme suit :
- Utilisez
kubectl describe pod
oukubectl get pod -o yaml
, puis vérifiez le message d'état d'erreur. - Vérifiez la métrique de consommation et d'utilisation de la mémoire pour KSM et vérifiez qu'elle atteint la limite avant d'être redémarrée.
Si vous confirmez que les problèmes de mémoire insuffisante sont le problème, utilisez 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 :
Pour les versions Google Distributed Cloud 1.16.0 ou ultérieures, Google Cloud Observability gère le KSM. Pour mettre à jour KSM, consultez la section Remplacer les valeurs par défaut de processeur et les demandes de mémoire et limites pour un composant Stackdriver.
Pour les versions Google Distributed Cloud 1.10.7 ou ultérieure, 1.11.3 ou ultérieure, 1.12.2 ou ultérieure, et 1.13 ou ultérieure, mais antérieure à 1.16.0, créez un
ConfigMap
pour ajuster le processeur et la mémoire :Créez un
ConfigMap
nommékube-state-metrics-resizer-config
dans l'espace de nomskube-system
(gke-managed-metrics-server
pour la version 1.13 ou ultérieure) avec la définition suivante. Ajustez le nombre de processeurs et de mémoire selon vos besoins :apiVersion: v1 kind: ConfigMap metadata: name: kube-state-metrics-resizer-config namespace: kube-system data: NannyConfiguration: |- apiVersion: nannyconfig/v1alpha1 kind: NannyConfiguration baseCPU: 200m baseMemory: 1Gi cpuPerNode: 3m memoryPerNode: 20Mi ```
Après avoir créé le ConfigMap, redémarrez le déploiement KSM en supprimant le pod KSM à l'aide de la commande suivante :
kubectl -n kube-system rollout restart deployment kube-state-metrics
Pour Google Distributed Cloud versions 1.9 et antérieures, 1.10.6 et antérieures, 1.11.2 et antérieures, et 1.12.1 et antérieures :
- Aucune bonne solution à long terme : si vous modifiez la ressource associée à KSM, les modifications sont automatiquement annulées par
monitoring-operator
. - Vous pouvez réduire
monitoring-operator
à 0 instance répliquée, puis modifier le déploiement KSM pour ajuster sa limite de ressources. Toutefois, le cluster ne recevra pas les correctifs de failles fournis par les nouvelles versions de correctifs à l'aide demonitoring-operator
. N'oubliez pas de redimensionner la sauvegardemonitoring-operator
après la mise à niveau du cluster vers une version ultérieure avec correctif.
- Aucune bonne solution à long terme : si vous modifiez la ressource associée à KSM, les modifications sont automatiquement annulées par
Réduisez le nombre de métriques du KSM.
Pour Google Distributed Cloud 1.13, KSM n'expose qu'un petit nombre de métriques appelées métriques de base par défaut. Ce comportement signifie que l'utilisation des ressources est inférieure à celle des versions précédentes, mais vous pouvez suivre la même procédure pour réduire davantage le nombre de métriques KSM.
Pour les versions de Google Distributed Cloud antérieures à la version 1.13, KSM utilise les options par défaut. Cette configuration expose un grand nombre de métriques.
Boucle de plantage gke-metrics-agent
Si gke-metrics-agent
ne rencontre que des problèmes de mémoire insuffisante sur le nœud où kube-state-metrics
existe, cela est dû à un grand nombre de métriques kube-state-metrics
. Pour atténuer ce problème, réduisez stackdriver-operator
et modifiez KSM pour exposer un petit ensemble de métriques requises, comme indiqué dans la section précédente.
N'oubliez pas de réduire la taille de stackdriver-operator
après la mise à niveau du cluster vers Google Distributed Cloud 1.13, où KSM expose par défaut un plus petit nombre de métriques de base.
gke-metric-agent
. Vous pouvez ajuster le processeur et la mémoire pour tous les pods gke-metrics-agent
en ajoutant le champ resourceAttrOverride
à la ressource personnalisée Stackdriver.
Boucle de plantage stackdriver-metadata-agent
Symptôme
Aucun libellé de métadonnées système n'est disponible lorsque vous filtrez des métriques dans Cloud Monitoring.
Cause
Le cas le plus courant de boucle de plantage 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 liste pas toutes les ressources, il liste tous les objets des types de ressources pertinents, tels que les pods, les déploiements et NetworkPolicy. L'agent s'exécute en tant que déploiement d'instance répliquée unique, ce qui augmente le risque de problèmes de mémoire insuffisante si le nombre d'objets est trop important.
Version concernée
Ce problème peut se produire dans n'importe quelle version de Google Distributed Cloud.
La limite par défaut de processeur et de mémoire a été augmentée dans les dernières versions de Google Distributed Cloud. Par conséquent, ces problèmes de ressources devraient être moins courants.
Correction et solution de contournement
Pour vérifier si votre problème est dû à des problèmes de mémoire saturée, procédez comme suit :
- Utilisez
kubectl describe pod
oukubectl get pod -o yaml
, puis vérifiez le message d'état d'erreur. - Vérifiez la métrique de consommation et d'utilisation de la mémoire pour
stackdriver-metadata-agent
et vérifiez qu'elle atteint la limite avant le redémarrage.
resourceAttrOverride
de la ressource personnalisée Stackdriver.
Boucle de plantage metrics-server
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 saturée dans les grands clusters ou dans les clusters présentant une densité de pods élevée.
Ce problème peut se produire dans n'importe quelle version de Google Distributed Cloud.
Correction et solution de contournement
Augmentez les limites de ressources du serveur de métriques.
Dans Google Distributed Cloud version 1.13 et 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
.
Toutes les ressources ne sont pas supprimées lors de la suppression du compte de service Cloud Audit Logs
Lorsque vous supprimez un compte de service utilisé pour Cloud Audit Logs, toutes les ressources Google Cloudne sont pas supprimées. Si vous supprimez et recréez régulièrement des comptes de service utilisés pour Cloud Audit Logs, la journalisation d'audit commence à échouer.
Symptôme
Des messages d'erreur d'autorisation refusée s'affichent dans le conteneur proxy Cloud Audit Logs.
Pour vérifier que l'échec du journal d'audit est causé par ce problème, exécutez la commande suivante:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global/features/cloudauditlogging
Remplacez PROJECT_NUMBER
par votre numéro de projet.
La réponse renvoie tous les comptes de service utilisés avec Cloud Audit Logs dans le projet, y compris les comptes de service qui ont été supprimés.
Cause et versions concernées
Toutes les ressources Google Cloud ne sont pas supprimées lorsque vous supprimez un compte de service utilisé pour Cloud Audit Logs. Vous atteindrez alors la limite de 1 000 comptes de service pour le projet.
Ce problème peut se produire dans n'importe quelle version de Google Distributed Cloud.
Correction et solution de contournement
Créez une variable d'environnement contenant une liste de tous les comptes de service que vous souhaitez conserver, séparés par une virgule. Entourez chaque adresse e-mail de compte de service entre guillemets simples et la liste entière entre guillemets doubles. Vous pouvez utiliser les éléments suivants comme point de départ:
SERVICE_ACCOUNT_EMAILS="'SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com'"
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet.SERVICE_ACCOUNT_NAME
: nom du compte de service.
La liste terminée doit ressembler à l'exemple suivant:
"'sa_name1@example-project-12345.iam.gserviceaccount.com','sa_name2@example-project-12345.iam.gserviceaccount.com','sa_name3@example-project-12345.iam.gserviceaccount.com'"
Exécutez la commande suivante pour supprimer la fonctionnalité de Cloud Audit Logs du projet:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/FLEET_REGION /features/cloudauditlogging
Remplacez les éléments suivants :
PROJECT_NUMBER
: numéro du projet.FLEET_REGION
: emplacement de l'appartenance au parc pour vos clusters. Il peut s'agir d'une région spécifique telle queus-central1
ouglobal
. Vous pouvez exécuter la commandegcloud container fleet memberships list
pour obtenir l'emplacement de l'appartenance.
Cette commande supprime complètement tous les comptes de service.
Recréez la fonctionnalité Cloud Audit Logs avec uniquement les comptes de service que vous souhaitez conserver:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://gkehub.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/FLEET_REGION/features?feature_id=cloudauditlogging \ -d '{"spec":{"cloudauditlogging":{"allowlistedServiceAccounts":[$SERVICE_ACCOUNT_EMAILS]}}}'
Étapes suivantes
Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.
Vous pouvez également consulter la page Obtenir de l'aide pour en savoir plus sur les ressources d'assistance, y compris les suivantes:
- Conditions requises pour ouvrir une demande d'assistance.
- Des outils pour vous aider à résoudre les problèmes, tels que les journaux et les métriques.
- Composants, versions et fonctionnalités compatibles de Google Distributed Cloud pour VMware (logiciel uniquement).