gpt4 book ai didi

kubernetes - 使用 topologyKey : kubernetes. io/hostname 的反关联性规则部署失败 - 必需值:不能为空

转载 作者:行者123 更新时间:2023-12-02 11:50:55 37 4
gpt4 key购买 nike

我有一个反关联规则,要求 kubernetes 将同一部署中的 pod 调度到 different nodes。 ,我们已经成功使用了很长时间。

affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: kubernetes.io/hostname
labelSelector:
matchExpressions:
- key: application
operator: In
values:
- {{ $appName }}
- key: proc
operator: In
values:
- {{ $procName }}

我正在尝试将我的 pod 关联性规则更新为强烈的偏好而不是硬性要求,这样如果部署需要的副本数多于可用节点数,我们就不需要扩展集群。
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- topologyKey: kubernetes.io/hostname
weight: 100
labelSelector:
matchExpressions:
- key: application
operator: In
values:
- {{ $appName }}
- key: proc
operator: In
values:
- {{ $procName }}

但是,当我尝试应用新规则时,我收到了一个关于 topologyKey 的意外错误:
Error: Deployment.apps "core--web" is invalid:
[spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey: Required value: can not be empty,
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey: Invalid value: "": name part must be non-empty,
spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey: Invalid value: "": name part must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]')]

调度程序似乎正在为拓扑键获取一个空字符串值,即使我的所有节点都有一个与正则表达式匹配的指定键的标签:
$ kubectl describe nodes | grep kubernetes.io/hostname
kubernetes.io/hostname=ip-10-x-x-x.ec2.internal
kubernetes.io/hostname=ip-10-x-x-x.ec2.internal
kubernetes.io/hostname=ip-10-x-x-x.ec2.internal
kubernetes.io/hostname=ip-10-x-x-x.ec2.internal

我没想到从需要到首选的简单更改会看到这样的问题。我搞砸了什么导致 topologyKey 错误?

最佳答案

required 和preferred 的语法略有不同,请注意对podAffinityTerm 的引用在错误消息路径中:

spec.template.spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[0].podAffinityTerm.topologyKey

首选调度的正确语法是:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
topologyKey: kubernetes.io/hostname
labelSelector:
matchExpressions:
- key: application
operator: In
values:
- {{ $appName }}
- key: proc
operator: In
values:
- {{ $procName }}

请注意 weight是顶级键,具有 podAffinityTerm 的同级键其中包含 topologyKeylabelSelector .

关于kubernetes - 使用 topologyKey : kubernetes. io/hostname 的反关联性规则部署失败 - 必需值:不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56224595/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com