如何在kubernetes中指定pod到节点的关联性

如何在kubernetes中指定pod到节点的关联性,kubernetes,Kubernetes,如何将特定的pod配置为在多节点kubernetes集群上运行,以便将pod的容器限制为节点的子集 例如,假设有A、B、C三个节点运行mu-kubernetes群集 如何限制吊舱仅在a&B上运行其容器,而不在C上运行 您可以将标签添加到要在其上运行pod的节点,并将nodeSelector添加到pod配置中。此处描述了该过程: 所以基本上你想 kubectl label nodes A node_type=foo kubectl label nodes B node_type=foo 您希望

如何将特定的pod配置为在多节点kubernetes集群上运行,以便将pod的容器限制为节点的子集

例如,假设有A、B、C三个节点运行mu-kubernetes群集


如何限制吊舱仅在a&B上运行其容器,而不在C上运行

您可以将标签添加到要在其上运行pod的节点,并将nodeSelector添加到pod配置中。此处描述了该过程:

所以基本上你想

kubectl label nodes A node_type=foo
kubectl label nodes B node_type=foo
您希望在pod规范中包含此节点选择器:

nodeSelector:
    node_type: foo

首先,您需要向节点添加标签。您可以参考Nebril关于如何添加标签的回答

然后,我建议您使用节点关联功能将POD约束到具有特定标签的节点。这里有一个例子

apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: node_type
            operator: In
            values:
            - foo
  containers:
  - name: with-node-affinity
    image: gcr.io/google_containers/pause:2.0
与节点选择器相比,关联/反关联功能大大扩展了您可以表达的约束类型


有关节点亲缘关系的更多详细信息,请参阅以下链接:

我无法对以前的答复发表评论,但我对已完成的答复投了赞成票。 节点选择器没有严格执行,依赖它可能会导致一些痛苦,包括Master无法处理来自Master上预定POD的请求和IOs。在给出答案时,它可能仍然是唯一的选择,但在以后的版本中并非如此

一定要使用节点附件节点附件来执行所需的During Scheduling IgnoredDuringExecution或首选的During Scheduling IgnoredDuringExecution


有关用于调度的更具表现力的过滤器,请阅读:

I我正在寻找一种方法来自动标记要添加到池中的节点,或者在matchExpressions中使用节点
名称
。您能否澄清自动标记的含义?还有,这与原来的问题有关吗?也许发布一个单独的问题可能会有所帮助。