我在k3s集群中部署redis pod时遇到了一个问题。
我已经更新了我的图表。
...
dependencies:
name: redis
version: 10.2.3
repository: https://charts.bitnami.com/bitnami
...
但是当我试图在值中应用nodeaffinity规则时。Yaml如下
redis:
master:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- worker4
然而,我们看到它没有被调度到node4。请问谁能告诉我哪个规则是错误的,或者我应该用pod亲和来代替。
preferredDuringSchedulingIgnoredDuringExecution
是软约束。调度器会考虑您的偏好,但如果在运行其他调度器逻辑后,其他节点具有更高的优先级分数,则不需要尊重您的偏好。您还给了它一个最小重量的weight: 1
。
如果您想强制pod在worker4
上运行,您可以使用requiredDuringSchedulingIgnoredDuringExecution
而不是preferredDuringSchedulingIgnoredDuringExecution
创建硬约束。这意味着如果没有其他节点匹配标签kubernetes.io/hostname: worker4
,您的pod将变得不可调度。
如果您想使用preferredDuringSchedulingIgnoredDuringExecution
以便您的pod可以在worker4
不可用时被调度到任何节点,您可以尝试增加权重。weight取值范围为range 1-100
.