StatefulSets 中的节点反亲和性,如何仅依赖节点名称与查找特定标签?
Node AntiAffinity in StatefulSets, how to rely solely on node name vs. finding a specific label?
我在使用 nodeAntiAffinity 时遇到问题...在我的用例中,我需要阻止同一节点上的 StatefulSet 运行 实例,仅此而已。我的节点没有标签,文档希望将其列为要求。是否可以完全依赖内置标签的唯一值 "kubernetes.io/hostname"?
我在 StatefulSet 中尝试做的事情:
spec:
podManagementPolicy: OrderedReady
affinity:
nodeAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
topologyKey: "kubernetes.io/hostname"
文档中的示例说明我必须做什么:
spec:
podManagementPolicy: OrderedReady
affinity:
nodeAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: <some key>
operator: In
values:
- <some value>
topologyKey: "kubernetes.io/hostname"
为了防止 StatefulSet 运行 的实例在同一个节点上,你需要一个 podAntiAffinity,摘自 Kubernetes document 的 zookeeper 教程:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk
topologyKey: "kubernetes.io/hostname"
我在使用 nodeAntiAffinity 时遇到问题...在我的用例中,我需要阻止同一节点上的 StatefulSet 运行 实例,仅此而已。我的节点没有标签,文档希望将其列为要求。是否可以完全依赖内置标签的唯一值 "kubernetes.io/hostname"?
我在 StatefulSet 中尝试做的事情:
spec:
podManagementPolicy: OrderedReady
affinity:
nodeAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
topologyKey: "kubernetes.io/hostname"
文档中的示例说明我必须做什么:
spec:
podManagementPolicy: OrderedReady
affinity:
nodeAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: <some key>
operator: In
values:
- <some value>
topologyKey: "kubernetes.io/hostname"
为了防止 StatefulSet 运行 的实例在同一个节点上,你需要一个 podAntiAffinity,摘自 Kubernetes document 的 zookeeper 教程:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk
topologyKey: "kubernetes.io/hostname"