kubernetes 为具有多个污点和节点关联的EKS托管节点组Pod配置Helm版本

dy2hfwbg  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(128)

如何在'emissary'和'monitoring'命名空间中配置Helm版本,以将Pod部署到具有两个污点的EKS托管节点组中
k8s.xxxxx/emissarynodeGroup:emissaryk8s.xxxxxx/monitoringnodeGroup:monitoring
在Helm值中不提供两个匹配表达式,并且在使用以下节点关联配置时,是否可以使用“OR”条件或其他方法将pod分配给专用节点组?

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
        - matchExpressions:
            - key: k8s.xxxxxx/monitoringnodeGroup
              operator: In
              values:
                - monitoring

同样,我也对宽容采取了类似的方法。我如何才能做到这一点?“

8e2ybdfx

8e2ybdfx1#

我没有得到你的条件点,你是说operator OR吗?
但是您在affinity中有不同的key,因此可能不可能,因为Values中可能有多个值。

matchExpressions:
    - {key: node-key, operator: In, values: [data-1, data-2, data-3]}

因为当你说OR的时候,你也有另一个在Node上调度POD的偏好。
在这种情况下,您可以使用preferredDuringIgnoredDuringExecution,您可以同时使用两者。

requiredDuringIgnoredDuringExecution & preferredDuringIgnoredDuringExecution

此外,您还可以设置requiredone作为常用值,并通过设置weight来保持多个preferred。

更新

另一种选择是将两个值都传递给节点affinity-like,然而,我认为你不是想传递两个值,而是某种表达式类型,它是在一个表达式中吗?
没有原生的K8s表达式类型选项可用,必须管理从HelmKustomize模板选项传递的值。

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
        - matchExpressions:
            - key: k8s.xxxxx/emissarynodeGroup
              operator: In
              values:
                - emissary
            - key: k8s.xxxxxx/monitoringnodeGroup
              operator: In
              values:
                - monitoring

相关问题