Kubernetes K8s吊舱亲和力&;反亲和力,软(首选DuringScheduling)在1.4中不受尊重?

Kubernetes K8s吊舱亲和力&;反亲和力,软(首选DuringScheduling)在1.4中不受尊重?,kubernetes,Kubernetes,我正在用k8s1.4pod亲和反亲和试验。我正试图让K8s尽可能多地将同一节点上相同服务的POD聚集在一起(即,如果不可能在服务已经存在的节点上放置更多内容,则只转到下一个节点)。为此,我需要设置: 一种硬(requiredDuringScheduling)反亲和力,用于排除已在运行不同服务的情况下运行(pod\u label\u xyz不在[value-A]) 软(preferredDuringScheduling)亲缘关系,尝试在[value-A]中相同服务(pod\u label\u xy

我正在用k8s1.4pod亲和反亲和试验。我正试图让K8s尽可能多地将同一节点上相同服务的POD聚集在一起(即,如果不可能在服务已经存在的节点上放置更多内容,则只转到下一个节点)。为此,我需要设置:

  • 一种硬(
    requiredDuringScheduling
    )反亲和力,用于排除已在运行不同服务的情况下运行(
    pod\u label\u xyz
    不在
    [value-A]

  • 软(
    preferredDuringScheduling
    )亲缘关系,尝试在
    [value-A]
    中相同服务(
    pod\u label\u xyz
    )的位置运行-重量100

  • 软(
    preferredDuringScheduling
    )反亲和力,尝试在同一服务尚未运行的情况下不运行(
    pod\u label\u xyz
    不存在)-重量100

  • 当有5个节点和3个服务
    pod\u label\u xyz
    &(
    value-a
    value-b
    value-c
    )且每个服务都使用复制控制器创建了1个pod时,第一个pod将得到正确调度,并且当扩展其中任何一个时,K8s遵守第一个硬规则。但是,第二个和第三个(实际上是第二个的多余部分)不受尊重。我看到,当我扩大K8s的规模时,它会尝试将POD推送到空节点(其他任何服务都不会使用),即使在服务已经运行的地方有能力安排更多的时间。事实上,如果我进一步放大,就会在原始节点和新节点(以前未使用的节点)上创建新的pod

    如果我遗漏了什么,请告诉我

    多谢各位

    这是我使用的注释

    scheduler.alpha.kubernetes.io/affinity: >
        {  
           "podAffinity":{  
              "preferredDuringSchedulingIgnoredDuringExecution":[  
                 {  
                    "weight":100,
                    "podAffinityTerm":{  
                       "labelSelector":{  
                          "matchExpressions":[  
                             {  
                                "key":"pod_label_xyz",
                                "operator":"Exists"
                             },
                             {  
                                "key":"pod_label_xyz",
                                "operator":"In",
                                "values":[  
                                   "value-a"
                                ]
                             }
                          ]
                       },
                       "namespaces":[  
                          "sspni-882-frj"
                       ],
                       "topologyKey":"kubernetes.io/hostname"
                    }
                 }
              ]
           },
           "podAntiAffinity":{  
              "requiredDuringSchedulingIgnoredDuringExecution":[  
                 {  
                    "labelSelector":{  
                       "matchExpressions":[  
                          {  
                             "key":"pod_label_xyz",
                             "operator":"Exists"
                          },
                          {  
                             "key":"pod_label_xyz",
                             "operator":"NotIn",
                             "values":[  
                                "value-a"
                             ]
                          }
                       ]
                    },
                    "namespaces":[  
                       "sspni-882-frj"
                    ],
                    "topologyKey":"kubernetes.io/hostname"
                 }
              ],
              "preferredDuringSchedulingIgnoredDuringExecution":[  
                 {  
                    "weight":100,
                    "podAffinityTerm":{  
                       "labelSelector":{  
                          "matchExpressions":[  
                             {  
                                "key":"pod_label_xyz",
                                "operator":"DoesNotExist"
                             }
                          ]
                       },
                       "namespaces":[  
                          "sspni-882-frj"
                       ],
                       "topologyKey":"kubernetes.io/hostname"
                    }
                 }
              ]
           }
        }
    

    请注意,我仍然在使用“nodeSelector”,但是我再次测试的所有机器都满足“nodeSelector”,并且所有的服务吊舱都有相同的“nodeSelector”问题,我正在进行跟踪。我做了一些编辑,试图清理问题格式和语法。请注意,我仍然在使用“nodeSelector”但是我再次测试的所有机器都满足“nodeSelector”的要求,并且所有的服务吊舱都有相同的“nodeSelector”问题。我做了一些编辑,试图清理问题的格式和语法。