ordonnancement K8S

la planification du déploiement

déploiement du régulateur RC ou leurs règles d'ordonnancement sont programmées automatiquement par le système, leur course finale respective sur laquelle les noeuds complètement à travers une série d'algorithmes calculés par le noeud maître du planificateur, l'utilisateur ne peut pas intervenir processus de programmation et les résultats, voici pas la démo! !

calendrier d'orientation NodeSelector

Dans l'environnement de production réel, il est possible que nous avons besoin de fonctionner dans une nacelle sous un nœud particulier, nous devons calendrier d'orientation, de sorte qu'un pod de fonctionner à un node2 de nœud spécifique, les étapes suivantes:

La première étape, une récompense à l'étiquette du noeud node2 de

[Root @ maître] # ~ kubectl étiquettes nœud application node2 = version 
peut voir l'étiquette kubectl get nœuds --show-étiquettes

En second lieu, définir le fichier pod.yaml, définir le sélecteur de laisser trois points dans l'application de l'étiquette pod: sur la libération de noeud

[root @ maître ~ ] # vim deploy.yaml 
apiVersion: apps / v1 
genre: Déploiement des 
métadonnées: 
  nom: myapp 
  espace de noms: default 
spécifications: 
  répliques: 3 
  sélecteur: 
    matchLabels: 
      app: sortie 
  modèle: 
    métadonnées: 
      Nom: MyPOD 
      Espace de noms: par défaut des 
      étiquettes : 
        application: version 
    spec: 
      nodeSelector: 
        application: libération des 
      conteneurs:
       - nom: mycontainer 
        Image: liwang7314 / myapp: v1 
        imagePullPolicy: IfNotPresent 
        ports:
         -Nom: http 
          containerPort: 80

La troisième étape consiste à créer des fichiers exécutables pod et pod marche noeud observé, nous avons constaté que tous les trois pod en cours d'exécution sur le noeud node2

[root @ maître ~] # kubectl créer - f deploy.yaml 
deployment.apps / myapp créé 
[root @ maître ~] # kubectl get dosettes - o large 
NOM STATUT DE PRÊT REDEMARRAGES AGE IP NODE NODE NOMME GATES EN ÉTAT 
monapp -95ff9459c-8g6tc    1 / 1      Exécution    0           4s     10.244 . 2.8    node2 <none> <aucun> 
monapp -95ff9459c-ghxxx    1 / 1      Exécution    0           4s     10.244 . 2.7   node2 <none> <aucun> 
monapp -95ff9459c-s5pt9    1 / 1      Exécution    0           4s     10.244 . 2.6    node2 <none> <aucun>

NodeAffinity: planification d'affinité Node

NodeAffinity signifie la politique d'ordonnancement d'affinité Node est utilisé pour remplacer toute la lettre NodeSelector stratégie de planification, il existe deux types de noeuds d'affinité Expression

  1. requiredDuringSchedulingIgnoredDuringExecution: doit respecter les règles spécifiées peuvent planifier Pod au nœud (NodeSelector fonction similaire, mais nulle part la syntaxe), ce qui correspond à la limite dure
  2. preferredDuringSchedulingIgnoredDuringExecution: priorité souligné répondre à des critères spécifiés, les tentatives de planificateur pour planifier l'arbre Pod, mais ne force pas, ce qui équivaut à une limite douce, la pluralité de règles de priorité sont également fournies des poids des valeurs (en poids), pour définir la séquence d'exécution

Nous définissons un fichier affinity.yaml, qui définit trois pod, le calendrier de pod pour permettre la définition de requiredDuringSchedulingIgnoredDuringExecution sur node2, par définition laissez pod preferredDuringSchedulingIgnoredDuringExecution prévue au noeud node2, comme suit:

La première étape, des fichiers de définitions yaml

[root @ maître ~] # cat affinity.yaml 
apiVersion: apps / v1 
genre: Déploiement des 
métadonnées: 
  nom: myapp 
  espace de noms: default 
spec: 
  répliques: 3 
  sélecteur: 
    matchLabels: 
      application: sortie 
  modèle: 
    métadonnées: 
      nom: MyPOD 
      espace de noms: par défaut des 
      étiquettes : 
        application: libération 
    spec: affinité: 
        nodeAffinity: 
          requiredDuringSchedulingIgnoredDuringExecution: 
            nodeSelectorTerms:
      
             - matchExpressions:  
              - clé: application
                opérateur: Dans 
                valeurs: 
                - libération 
          preferredDuringSchedulingIgnoredDuringExecution: 
          - poids: 1 
            préférence 
              matchExpressions: 
              - clé: application 
                exploitant: NOTIN 
                valeurs: 
                - libération des 
      conteneurs:
       - nom: mycontainer l' 
        image: liwang7314 / myapp: v1 
        imagePullPolicy: IfNotPresent 
        ports:
         - Nom: http 
          containerPort: 80

Ensuite, créez pod, puis observer le nœud où la nacelle, se trouve sur tous devrait node2

[root @ maître ~] # kubectl get dosettes - o large 
NOM STATUT DE PRÊT REDEMARRAGES AGE IP NODE NODE NOMME GATES EN ÉTAT 
monapp -6fcfb98879-566z5    1 / 1      Exécution    0           3m24s    10,244 . 2.10    node2 <none> <aucun> 
monapp -6fcfb98879-5r6cm    1 / 1      Exécution    0           3m24s    10,244 . 2.11    node2 <none> <aucun> 
monapp -6fcfb98879-7kwwq    1 / 1      Course à pied   0           3m24s    10,244 . 2.9     node2 <none> <aucun>

Si l'on requiredDuringSchedulingIgnoredDuringExecution enlevé, la vue peut être trouvé déjà prévue node1, node2, mais il y aura un pod, parce que le champ preferredDuringSchedulingIgnoredDuringExecution autant que possible, non nécessaire, et donc les résultats suivants

[root @ maître ~] # kubectl get dosettes - o large 
NOM STATUT DE PRÊT REDEMARRAGES AGE IP NODE NODE NOMME GATES EN ÉTAT 
monapp -55679db465-h5ftb    1 / 1      Exécution    0           11s    10,244 . 1,76    node1 <none> <aucun> 
monapp -55679db465-kj58w    1 / 1      Exécution    0           11s    10,244 . 1,75    node1 <none> <aucun> 
monapp -55679db465-mwfjq    1 / 1      Exécution    0          11s    10.244 . 2.12    node2 <none> <aucun>

Remarque NodeAffinity ensemble de règles:

  1. Si les deux sont définis nodeSelector et nodeAffinity, vous devez les deux conditions sont réunies, Pod peut éventuellement courir au noeud spécifié
  2. Si nodeAffinity formulé plus de nodeSelectorTerms, alors on peut être en mesure d'égaler le succès de la planification
  3. S'il y a plusieurs matchExpressions dans nodeSelectorTerms, puis un nœud doit répondre à tous matchExpressions pour exécuter le Pod

 

Je suppose que tu aimes

Origine www.cnblogs.com/fengzi7314/p/12466738.html
conseillé
Classement