ARTIFACTORY:在使用Helm Charts部署ARTIFACTORY时如何使用NodeAffinity和PodAntiAffinity

阿什拉夫Kherbawy
2023-01-22 11:06

有时您想要分离您的pod,或者将它们保存在同一个Node中。下面是如何在部署Artifactory时实现这一点的快速指南:

1.NodeAffinity:

假设我的集群中有2个节点,其中一个节点的标签为disktype=ssd,我希望将Artifactory pod分配到该节点下。默认情况下,我们的Artifactory图表使用PodAntiAffinity将pod分离到不同的节点。要将我的artifactory pods分配给所有包含disktype=ssd标签的节点,我们需要使用affinity属性,它位于values.yaml中的artifactory下:
artifactory:
亲和力:{}
要配置它,以便将pods分配到标签为disktype=ssd的节点下:artifactory:
亲和力:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
—key: disktype
接线员:在
价值观:
- - - - - - ssd

部署命令(重复其余步骤):升级头盔——安装artifactory -n artifactory jfrog/artifactory -f values.yaml

2.NodeSelector:

你可以用nodeSelector达到同样的目的。这是最简单的方法,但灵活性较差。在我们的图表中,你可以使用nodeSelector进行artifactory:artifactory:
nodeSelector:
disktype: ssd

3.纵容:

可以使用公差来决定是否可以为pod分配具有匹配污点的节点。在这里,我给我的一个节点应用了一个污点:

用户添加图片
这意味着不包含与污染选择器匹配的公差的pod将无法应用于具有污染的节点。

为了确保人工pod可以分配给包含特定污点的节点,我们可以配置以下内容:artifactory:
纵容:
-键:"key1"
接线员:“平等”
价值:“value1”
效果:“NoSchedule”
这确保了Artifactory pod能够应用到具有特定污点的节点。

4.podAntiAffinity:

如前所述,默认情况下,我们的图表分配Artifactory pod使用podAntiAffinity,这意味着它们将被分配不同的节点。默认值为:artifactory:
podAntiAffinity:
类型:软
topologyKey:“kubernetes.io /主机名”

类型可以是软的也可以是硬的。

类型soft表示它将使用preferredDuringSchedulingIgnoredDuringExecution规则,和类型硬表示它将使用requiredDuringSchedulingIgnoredDuringExecution
如果您使用任何其他类型,它将作为无反亲和。

podAntiAffinity只有在将常规affinity值保留为空时才会被使用。