使用 kustomize 修改nodeSelector的

yee*_*379 5 kubernetes kustomize

如果能够在更高级别定义一种方法来确定一组 pod 应该在其上运行的一组节点,对我来说将会非常有用。

有没有办法使用 kustomize 以便我可以指定部署应具有哪些 nodeSelector?

Hen*_*nry 5

OP 要求找到一种方法让所有 Pod 都在一组预定义的节点上运行。因此,添加到@yee379,您可以定义一个补丁来一次应用于多个通用资源,如下所示:

patches:
  - patch: |-
      kind: not-important
      metadata:
        name: not-important
      spec:
        template:
          spec:
            nodeSelector:
              key: value
    target:
      kind: (StatefulSet|Deployment|Job)
  # ... Include more resources
  # If you'd like to include Pods specifically:
  - patch: |-
      kind: not-important
      metadata:
        name: not-important
      spec:
        nodeSelector:
          key: value
    target:
      kind: Pod
Run Code Online (Sandbox Code Playgroud)


Mal*_*ata -1

我认为你可以包含节点。此类节点是为特定 Pod 保留的。

\n\n

节点亲和性是 pod 的一个属性,它将它们吸引到一组节点(作为偏好或硬性要求)。污点与 \xe2\x80\x93 相反,它们允许节点排斥一组 pod。

\n\n

污点和容忍协同工作,以确保 pod 不会被调度到不适当的节点上。一个或多个污点被应用到一个节点;这标志着该节点不应接受任何不能容忍污点的 Pod。容忍应用于 Pod,并允许(但不要求)Pod 调度到具有匹配污点的节点上。

\n\n

污点和容忍是一种灵活的方法,可以引导 pod 远离节点或驱逐不应运行的 pod\xe2\x80\x99。以下是其中的一些示例:

\n\n
    \n
  • 专用节点:如果您希望将一组节点专用\n供一组特定用户独占使用,则可以向这些节点添加污点\n(例如,kubectl 污点节点nodename private=groupName:NoSchedule)\n然后添加对其 Pod 的相应容忍度(这可以通过编写自定义准入控制器最轻松地完成)。然后,具有容忍度的 Pod 将被允许使用受污染的(专用)节点以及集群中的任何其他节点。
  • \n
  • 具有特殊硬件的节点:在一小部分节点具有专用硬件(例如 GPU)的集群中,最好将不需要专用硬件的 Pod 保留在这些节点之外,因此为后来到达的确实需要专用硬件的 Pod 留出空间。这可以通过污染具有专用硬件的节点(例如 kubectl 污点节点 nodename\nspecial=true:NoSchedule 或 kubectl 污点节点 nodename\nspecial=true:PreferNoSchedule)并向使用特殊硬件的 pod 添加相应的容忍度来完成。硬件。
  • \n
  • 基于污点的驱逐(测试版功能):当存在节点问题时,每个 Pod 可配置的驱逐行为,这将在下一节中描述。
  • \n
\n\n

您可以在此处找到更多信息:特定 Pod 的 Kubernetes 节点

\n\n

有趣的文档:taint-toleration-dedicated

\n