Chapitre 4. Configuration des contraintes d'étalement de la topologie des pods pour la surveillance

Vous pouvez utiliser les contraintes de répartition de la topologie des pods pour contrôler la répartition des pods Prometheus, Thanos Ruler et Alertmanager sur une topologie de réseau lorsque les pods OpenShift Container Platform sont déployés dans plusieurs zones de disponibilité.

Les contraintes de répartition de la topologie des pods permettent de contrôler la planification des pods dans des topologies hiérarchiques dans lesquelles les nœuds sont répartis sur différents niveaux d'infrastructure, tels que les régions et les zones au sein de ces régions. En outre, la possibilité de planifier des pods dans différentes zones permet d'améliorer la latence du réseau dans certains scénarios.

4.1. Configuration des contraintes d'étalement de la topologie des pods pour Prometheus

Pour la surveillance de la plateforme OpenShift Container Platform, vous pouvez configurer des contraintes d'étalement de la topologie des pods pour Prometheus afin d'affiner la planification des répliques de pods sur les nœuds dans les différentes zones. Cela permet de s'assurer que les pods Prometheus sont hautement disponibles et s'exécutent plus efficacement, car les charges de travail sont réparties sur des nœuds dans différents centres de données ou zones d'infrastructure hiérarchiques.

Vous configurez les contraintes d'étalement de la topologie des pods pour Prometheus dans la carte de configuration cluster-monitoring-config.

Conditions préalables

  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Vous avez créé l'objet cluster-monitoring-config ConfigMap .

Procédure

  1. Modifiez l'objet cluster-monitoring-config ConfigMap dans l'espace de noms openshift-monitoring:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. Ajoutez des valeurs pour les paramètres suivants sous data/config.yaml/prometheusK8s pour configurer les contraintes d'étalement de la topologie des pods :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          topologySpreadConstraints:
          - maxSkew: 1 1
            topologyKey: monitoring 2
            whenUnsatisfiable: DoNotSchedule 3
            labelSelector:
              matchLabels: 4
                app.kubernetes.io/name: prometheus
    1
    Indiquez une valeur numérique pour maxSkew, qui définit le degré d'inégalité de la répartition des cosses. Ce champ est obligatoire et la valeur doit être supérieure à zéro. La valeur spécifiée a un effet différent selon la valeur spécifiée pour whenUnsatisfiable.
    2
    Spécifiez une clé d'étiquettes de nœuds pour topologyKey. Ce champ est obligatoire. Les nœuds qui ont une étiquette avec cette clé et des valeurs identiques sont considérés comme étant dans la même topologie. Le planificateur essaiera de placer un nombre équilibré de pods dans chaque domaine.
    3
    Indiquez une valeur pour whenUnsatisfiable. Ce champ est obligatoire. Les options disponibles sont DoNotSchedule et ScheduleAnyway. Indiquez DoNotSchedule si vous souhaitez que la valeur maxSkew définisse la différence maximale autorisée entre le nombre de modules correspondants dans la topologie cible et le minimum global. Indiquez ScheduleAnyway si vous souhaitez que le planificateur planifie toujours le module, mais qu'il accorde une priorité plus élevée aux nœuds susceptibles de réduire l'asymétrie.
    4
    Spécifiez une valeur pour matchLabels. Cette valeur est utilisée pour identifier l'ensemble des pods correspondants auxquels appliquer les contraintes.
  3. Enregistrez le fichier pour appliquer automatiquement les modifications.

    Avertissement

    Lorsque vous enregistrez les modifications apportées à la carte de configuration cluster-monitoring-config, les pods et autres ressources du projet openshift-monitoring peuvent être redéployés. Les processus de surveillance en cours dans ce projet peuvent également redémarrer.