kubernetes 使用kustomize修改nodeSelector的

ryoqjall  于 2022-12-22  发布在  Kubernetes
关注(0)|答案(3)|浏览(183)

如果能够在更高的层次上定义一种方法来确定一组pod应该在其上运行的一组节点,这对我来说将是非常有用的。
有没有一种方法可以使用自定义,以便我可以指定部署应该有什么nodeselector?

6qqygrtg

6qqygrtg1#

我最后只是定义了一个补丁:
kustomization.yaml中:

patchesStrategicMerge:
- nodeSelectors.yaml

nodeSelectors.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  template:
    spec:
      nodeSelector:
        group: infra
        slurm: mysql

有点冗长;但我猜它给了最大的灵活性,在定义哪些豆荚我关心平和在哪里。

oknrviil

oknrviil2#

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
cgfeq70w

cgfeq70w3#

我想你可以tain节点,这种节点是为特定的pod预留的。
节点亲和性,是一个吸引他们到一组节点(作为一个偏好或硬要求)荚的属性。污染是相反的-他们允许一个节点排斥一组荚。
污点和容差一起工作以确保pod不被调度到不适当的节点上。一个或多个污点被应用到一个节点;这标志着节点不应该接受任何不容许污染的POD。容差被应用于POD,并且允许(但不要求)POD调度到具有匹配污染的节点上。
污点和容忍度是一种灵活的方法,可以引导pod远离节点或驱逐不应该运行的pod。下面是其中的一些例子:

      • 专用节点:**如果要将一组节点专用于特定的一组用户,则可以向这些节点添加一个污点(例如,kubectl污点节点nodename dedicated = groupName:NoSchedule),然后向它们的pod添加一个相应的容差(通过编写定制准入控制器可以最轻松地完成此操作)。然后,具有容差的pod将被允许使用污点(专用)节点以及集群中的任何其他节点。
      • 具有特殊硬件的节点:**在一个小的节点子集具有特殊硬件(例如GPU)的群集中,最好将不需要特殊硬件的Pod与这些节点隔离,从而为稍后到达的需要特殊硬件的Pod留出空间。这可以通过污染具有特殊硬件的节点(例如kubectl污染节点nodename special = true:NoSchedule或kubectl污染节点nodename special = true:PreferNoSchedule)并为使用特殊硬件的Pod添加相应的容忍度来实现。
      • 基于污点的逐出(测试版特性):**当节点出现问题时,可按pod配置的逐出行为,将在下一节中介绍。

您可以在此处找到更多信息:Kubernetes node for specific pods.
有趣的文档:taint-toleration-dedicated.

相关问题