3.8. Contrôle du placement des pods à l'aide de contraintes d'étalement de la topologie des pods


Vous pouvez utiliser les contraintes d'étalement de la topologie des pods pour contrôler le placement de vos pods sur des nœuds, des zones, des régions ou d'autres domaines topologiques définis par l'utilisateur.

3.8.1. A propos des contraintes d'étalement de la topologie des pods

L'utilisation de pod topology spread constraint permet de contrôler finement la distribution des pods dans les domaines de défaillance afin d'obtenir une haute disponibilité et une utilisation plus efficace des ressources.

Les administrateurs d'OpenShift Container Platform peuvent étiqueter les nœuds pour fournir des informations topologiques, telles que des régions, des zones, des nœuds ou d'autres domaines définis par l'utilisateur. Une fois ces étiquettes définies sur les nœuds, les utilisateurs peuvent alors définir des contraintes d'étalement de la topologie des pods pour contrôler le placement des pods dans ces domaines topologiques.

Vous spécifiez les pods à regrouper, les domaines topologiques dans lesquels ils sont répartis et l'inclinaison acceptable. Seuls les pods situés dans le même espace de noms sont mis en correspondance et regroupés lorsqu'ils sont répartis en raison d'une contrainte.

3.8.2. Configuration des contraintes d'étalement de la topologie des pods

Les étapes suivantes montrent comment configurer les contraintes d'étalement de la topologie des pods pour distribuer les pods qui correspondent aux étiquettes spécifiées en fonction de leur zone.

Vous pouvez spécifier plusieurs contraintes d'étalement de la topologie des pods, mais vous devez vous assurer qu'elles n'entrent pas en conflit les unes avec les autres. Toutes les contraintes d'étalement de la topologie du pod doivent être satisfaites pour qu'un pod soit placé.

Conditions préalables

  • Un administrateur de cluster a ajouté les étiquettes requises aux nœuds.

Procédure

  1. Créez une spécification Pod et spécifiez une contrainte d'étalement de la topologie du pod :

    Exemple de fichier pod-spec.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
      labels:
        foo: bar
    spec:
      topologySpreadConstraints:
      - maxSkew: 1 1
        topologyKey: topology.kubernetes.io/zone 2
        whenUnsatisfiable: DoNotSchedule 3
        labelSelector: 4
          matchLabels:
            foo: bar 5
      containers:
      - image: "docker.io/ocpqe/hello-pod"
        name: hello-pod

    1
    La différence maximale en nombre de pods entre deux domaines topologiques. La valeur par défaut est 1, et vous ne pouvez pas spécifier une valeur de 0.
    2
    Clé de l'étiquette d'un nœud. Les nœuds ayant cette clé et une valeur identique sont considérés comme faisant partie de la même topologie.
    3
    Comment traiter un pod s'il ne satisfait pas à la contrainte d'étalement. La valeur par défaut est DoNotSchedule, ce qui indique au planificateur de ne pas planifier le module. La valeur ScheduleAnyway permet de planifier le module, mais l'ordonnanceur donne la priorité au respect de la contrainte de dispersion afin de ne pas aggraver le déséquilibre de la grappe.
    4
    Les gousses qui correspondent à ce sélecteur d'étiquette sont comptées et reconnues comme un groupe lorsqu'elles sont étalées pour satisfaire à la contrainte. Veillez à spécifier un sélecteur d'étiquette, sinon aucune cosse ne pourra être prise en compte.
    5
    Veillez à ce que cette spécification Pod définisse également ses étiquettes en fonction de ce sélecteur d'étiquettes si vous voulez qu'elle soit comptée correctement à l'avenir.
  2. Créer la capsule :

    $ oc create -f pod-spec.yaml

3.8.3. Exemple de contraintes de répartition de la topologie des pods

Les exemples suivants illustrent les configurations de contraintes de propagation de la topologie des pods.

3.8.3.1. Exemple de contrainte de diffusion d'une topologie de pod unique

Cet exemple de spécification Pod définit une contrainte d'étalement de la topologie du pod. Elle s'applique aux pods étiquetés foo:bar, se répartit entre les zones, spécifie une inclinaison de 1 et ne planifie pas le pod s'il ne répond pas à ces exigences.

kind: Pod
apiVersion: v1
metadata:
  name: my-pod
  labels:
    foo: bar
spec:
  topologySpreadConstraints:
  - maxSkew: 1
    topologyKey: topology.kubernetes.io/zone
    whenUnsatisfiable: DoNotSchedule
    labelSelector:
      matchLabels:
        foo: bar
  containers:
  - image: "docker.io/ocpqe/hello-pod"
    name: hello-pod

3.8.3.2. Exemple de contraintes d'étalement de la topologie des pods multiples

Cet exemple de spécification Pod définit deux contraintes d'étalement de la topologie des pods. Les deux correspondent aux pods étiquetés foo:bar, spécifient une inclinaison de 1, et ne planifient pas le pod s'il ne répond pas à ces exigences.

La première contrainte distribue les nacelles en fonction d'une étiquette définie par l'utilisateur node et la deuxième contrainte distribue les nacelles en fonction d'une étiquette définie par l'utilisateur rack. Les deux contraintes doivent être respectées pour que le module soit programmé.

kind: Pod
apiVersion: v1
metadata:
  name: my-pod-2
  labels:
    foo: bar
spec:
  topologySpreadConstraints:
  - maxSkew: 1
    topologyKey: node
    whenUnsatisfiable: DoNotSchedule
    labelSelector:
      matchLabels:
        foo: bar
  - maxSkew: 1
    topologyKey: rack
    whenUnsatisfiable: DoNotSchedule
    labelSelector:
      matchLabels:
        foo: bar
  containers:
  - image: "docker.io/ocpqe/hello-pod"
    name: hello-pod

3.8.4. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.