Serveur de mesures de Kubernetes

Lorsque vous activez l'extension de cluster Kubernetes Metrics Server, vous pouvez transmettre les paires clé/valeur suivantes en tant qu'arguments

Pour utiliser le serveur de mesures Kubernetes en tant qu'extension de cluster, vous devez également déployer le gestionnaire de certificats (soit en tant que produit autonome, soit en tant qu'extension de cluster). Si vous déployez le gestionnaire de certificats en tant que produit autonome, définissez l'argument de configuration skipAddonDependenciesCheck sur true.

Arguments de configuration communs à la plupart des modules complémentaires de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
affinity affinité

Groupe de règles de programmation d'affinité.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU Nvidia
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.affinity
  • Opérateur réseau NVIDIA, utilisez operator.affinity
  • Pilote CSI SMB, utilisez contoller.affinity
  • Opérateur de GPU AMD, utilisez controllerManager.affinity
Facultatif NULL NULL
nodeSelectors Sélecteurs de noeud

Vous pouvez utiliser des sélecteurs de noeud et des libellés de noeud pour contrôler les noeuds de processus actif sur lesquels les pods d'extension sont exécutés.

Pour qu'un pod s'exécute sur un noeud, le sélecteur de noeud du pod doit avoir la même clé/valeur que l'étiquette du noeud.

Définissez nodeSelectors sur une paire clé/valeur correspondant à la fois au sélecteur de noeud du pod et au libellé du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Opérateur GPU NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez worker.nodeSelector
  • Opérateur réseau NVIDIA, utilisez operator.nodeSelectors
  • Opérateur de GPU AMD, utilisez selector ou controllerManager.nodeSelector
Facultatif NULL {"foo":"bar", "foo2": "bar2"}

Le pod s'exécutera uniquement sur les noeuds possédant le libellé foo=bar ou foo2=bar2.

numOfReplicas numOfReplicas Nombre de répliques du déploiement de l'extension.
Non utilisé par:
  • Module d'extension GPU AMD
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • CoreDNS, utilisez nodesPerReplica
  • Repérage des fonctionnalités de noeud, utilisez master.replicaCount
  • Opérateur de GPU AMD, utilisez controllerManager.replicas
Requis 1

Crée une réplique du déploiement d'extension par cluster.

2

Crée deux répliques du déploiement d'extension par cluster.

rollingUpdate rollingUpdate

Contrôle le comportement souhaité de la mise à jour non simultanée par maxSurge et maxUnavailable.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
Equivalents possibles :
  • Opérateur de GPU NVIDIA, utilisez daemonsets.rollingUpdate.maxUnavailable
  • Opérateur de GPU AMD, utilisez upgradePolicy dans devicePlugin, metricsExporter, testRunner, configManager ou draDriver
Facultatif NULL NULL
tolerations tolérances

Vous pouvez utiliser des tolérances et des taches pour contrôler les noeuds de processus actif sur lesquels les pods d'extension s'exécutent.

Pour qu'un pod s'exécute sur un noeud présentant une entorse, le pod doit avoir une tolérance correspondante.

Définissez tolerations sur une paire clé/valeur correspondant à la fois à la tolérance du pod et à la tache du noeud de processus actif.

Format JSON en texte brut ou encodé Base64.

Equivalents possibles :
  • Repérage des fonctionnalités de noeud, utilisez master.tolerations et/ou worker.tolerations
  • Opérateur de GPU NVIDIA, utilisez daemonsets.tolerations
  • Opérateur réseau NVIDIA, utilisez operator.tolerations
  • Pilote CSI SMB, utilisez controller.tolerations
  • Opérateur GPU AMD, utilisez les tolérances dans devicePlugin, metricsExporter, testRunner, configManager, draDriver ou controllerManager
Facultatif NULL [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

Seuls les pods présentant cette tolérance peuvent être exécutés sur des noeuds de processus actif présentant la tache tolerationKeyFoo=tolerationValBar:noSchedule.

topologySpreadConstraints topologySpreadConstraints

Comment répartir les pods correspondants entre la topologie donnée.

Format JSON en texte brut ou encodé Base64.

Non utilisé par:
  • Repérage des fonctionnalités du noeud
  • Opérateur GPU NVIDIA
  • Opérateur réseau NVIDIA
  • Pilote CSI SMB
  • Opérateur de GPU AMD
Facultatif NULL NULL
Arguments de configuration propres à ce module complémentaire de cluster
Clé (API et CLI) Nom d'affichage de la clé (console) Description Obligatoire/Facultatif Valeur par défaut Exemple de valeur
metrics-server.ContainerResources ressources de conteneur metrics-server

Vous pouvez spécifier les quantités de ressources demandées par les conteneurs d'extension et définir les limites d'utilisation des ressources que les conteneurs d'extension ne peuvent pas dépasser.

Format JSON en texte brut ou encodé Base64.

Facultatif NULL {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

Créez des conteneurs d'extension qui demandent 100 milllicores de CPU et 100 mégaoctets de mémoire. Limitez les conteneurs d'extension à 500 milllicores de CPU et 200 mégaoctets de mémoire.

skipAddonDependenciesCheck skipAddonDependenciesCheck Vérifier si d'autres modules nécessaires ont été déployés (comme le module du gestionnaire de certificats). Facultatif NULL true
Considérations relatives aux clusters volumineux

Le tableau suivant décrit les considérations relatives à la configuration de ce module complémentaire de cluster dans les clusters volumineux.

Nom d'argument Nombre de noeuds de processus métier de rôles Description à mesure que la taille du cluster augmente Risques Recommandation
metrics-server.ContainerResources Y (Oui)

Définit les demandes et les limites d'UC et de mémoire pour le pod Metrics Server.

  • Les opérations de mise au rebut augmentent linéairement car Metrics Server collecte des mesures à partir de chaque noeud.
  • L'utilisation de l'UC augmente pour la collecte et le traitement des mesures.
  • L'utilisation de la mémoire augmente pour la conservation des mesures agrégées.
  • La disponibilité des mesures peut prendre plus de temps.

Si les ressources sont sous-dimensionnées :

  • Le pod Metrics Server peut être arrêté car il dépasse sa limite de mémoire.
  • La limitation de l'UC peut entraîner des grattages lents ou manqués.
  • L'API Metrics peut fournir des données obsolètes ou devenir indisponible.
  • Les décisions de l'outil de redimensionnement automatique de pod horizontal peuvent être retardées ou inexactes.
  • Augmentez les ressources de CPU et de mémoire proportionnellement au nombre de noeuds.
  • Augmentez la CPU pour prendre en charge le raclage et le traitement des mesures.
  • Augmentez la mémoire pour prendre en charge l'agrégation de mesures.
  • Validez le dimensionnement des ressources via le test de charge pour les clusters comportant plus de 5 000 noeuds.
numOfReplicas N

Contrôle le nombre de pods de serveur de mesures.

Chaque réplique gratte chaque noeud. Metrics Server ne répartit pas la charge globale d'analyse entre les répliques. Par conséquent, des répliques supplémentaires fournissent une haute disponibilité plutôt qu'une capacité de traitement supplémentaire.

  • Des répliques supplémentaires génèrent un trafic de fragmentation en double.
  • L'augmentation du nombre de répliques n'améliore pas le débit de raclage.
  • Utilisez deux ou trois répliques pour fournir une haute disponibilité.
  • N'augmentez pas le nombre de répliques pour améliorer les performances.
affinity / nodeSelectors / tolerations N

Contrôlez le placement des pods Metrics Server.

Metrics Server est un composant critique du plan de contrôle. Son emplacement affecte la stabilité du service et la disponibilité des mesures de ressources.

Si ces arguments ne sont pas configurés correctement :

  • Les pods peuvent s'exécuter sur des noeuds instables ou limités en ressources.
  • Les pods peuvent redémarrer.
  • Les performances peuvent être réduites.
  • Des écarts intermittents peuvent survenir dans la disponibilité des mesures.
  • Exécutez Metrics Server sur des noeuds stables avec un taux d'attrition faible et des ressources suffisantes.
  • Préférez les pools de noeuds système ou d'infrastructure dédiés.
  • Configurez les tolérances lorsque les noeuds cible sont endommagés.
rollingUpdate N

Contrôle la stratégie de mise à jour du déploiement pour Metrics Server.

Le temps d'inactivité du serveur de mesures rend l'API de mesures indisponible, empêche l'outil de redimensionnement automatique de pod horizontal de fonctionner correctement et entraîne l'échec des commandes kubectl top .

Si cet argument n'est pas configuré correctement :

  • Toutes les répliques peuvent redémarrer en même temps.
  • Le pipeline de mesures peut devenir temporairement indisponible.
  • Configurez maxUnavailable avec soin.
  • Assurez-vous qu'au moins une réplique du serveur de mesures reste active pendant une mise à jour.
  • Utilisez une stratégie de déploiement progressif.
topologySpreadConstraints N

Contrôle la distribution des pods Metrics Server entre les noeuds, les domaines de disponibilité et les autres domaines de défaillance.

  • Empêche l'exécution de toutes les répliques sur le même noeud ou dans le même domaine de disponibilité.
  • Améliore la résilience face aux pannes de noeud et de domaine de disponibilité.
  • Ajoute une petite complexité de planification.

Si les contraintes de répartition de topologie ne sont pas configurées :

  • Toutes les répliques peuvent s'exécuter sur le même noeud ou dans le même domaine de disponibilité.
  • Une défaillance unique peut entraîner une interruption complète des mesures.
  • Répartir les répliques entre les domaines de disponibilité lorsque cela est possible.
  • Exécutez des répliques sur différents noeuds.
  • Maintenez une distribution uniforme pour fournir une haute disponibilité.
skipAddonDependenciesCheck N

Contrôle si la validation des dépendances est ignorée lors de l'installation du module.

Cet argument n'a pas d'impact direct sur les performances ou l'évolutivité, mais il affecte la fiabilité du déploiement. Dans OKE, le serveur de mesures dépend de composants tels que le gestionnaire de certificats.

Si la validation de dépendance est ignorée :

  • Le module peut être installé sans aucune dépendance requise.
  • Le pipeline de mesures peut ne pas fonctionner.
  • Des échecs d'exécution peuvent survenir.
  • Le dépannage peut s'avérer plus difficile dans un cluster de grande taille.
  • Laisser la validation de dépendance activée.
  • Ignorer la validation uniquement dans les environnements contrôlés ou de test, ou lorsque toutes les dépendances ont été validées manuellement.