Argo Workflows Job Pod 的默认容忍度和节点亲和力

问题描述 投票:0回答:1

我正在使用 Argo Workflows 来做一些 cronjobs。 生成的 pod 似乎自动添加了

nodeAffinity
toleration
,如下所示:

  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - node24
  schedulerName: default-scheduler
  tolerations:
    - key: node.kubernetes.io/not-ready
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300
    - key: node.kubernetes.io/unreachable
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300

对于

nodeAffinity
,我希望K8s(而不是Argo)来决定要调度的节点。我观察到 Argo 总是只将 pod 粘在 1~2 个特定节点上;

对于

toleration
,我很困惑为什么它需要允许将 pod 调度到未就绪/无法访问的节点。

那么,是否可以删除甚至自定义默认的nodeAffinity和toleration?

我在Argo的文档中找到了Template Defaults,但不够详细。

谢谢。

argo-workflows
1个回答
0
投票

toleration
字段均由 kubernetes 默认在任何 pod 上设置。如果当前节点崩溃或无法访问,这将控制 pod 何时在新节点上重新启动。请参阅 https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/#taint-based-evictions 了解更多信息。

我不能确定为什么设置

nodeAffinity
,但这可能是节点安装只能从特定节点附加的卷的结果。然后,Kubernetes 会自动添加与卷约束匹配的
nodeAffinity
。请参阅 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#node-affinity

© www.soinside.com 2019 - 2024. All rights reserved.