我们可以在 kubernetes 的单个 nodeSelector 中提及多个节点标签吗

Pra*_*ash 3 docker kubernetes kubernetes-pod

我想在两个特定节点(我们的 kube 集群中总共 15 个节点)中安排 10 个 pod。

所以在复制控制器文件中,我在 nodeSelector 中提到了两个值,如下所示。

nodeSelector:  
  app: node1  
  app: node2  
Run Code Online (Sandbox Code Playgroud)

问题是它一直只占用 node2。无论我提到什么序列,它只占用最后一个节点。

注意:node1node2是节点的标签。

CJ *_*len 8

on nodeSelectoraPodSpec只是 a map[string]string(而不是对象NodeSelector中使用的功能更丰富的类型NodeAffinity)。这意味着键“app”只能有一个值,并且最终会被覆盖为“node2”。

您可以通过应用通用标签(例如scheduling-group: foo)来完成节点1 和节点2 之间的调度,然后让您的replicationController 使用该标签作为nodeSelector.


小智 6

更好的方法是使用这样的东西:

  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - node1
            - node2
Run Code Online (Sandbox Code Playgroud)