kubernetes:什么是有效的节点字段
kubernetes : What are valid node fields
我想将 podAffinity 与 matchFields 一起使用。
在网上我只找到字段 metadata.name :
的例子
- matchFields:
- key: metadata.name
operator: NotIn
values:
- worker-1
我想知道是否还有其他有效的节点字段我可以使用并且how/where我能找到它们吗?
提前致谢
我做了一些挖掘,发现 Matchfields
是由于调度 DaemonSets
的问题而引入的。创建 pod 的控制器依赖于节点上的 kubernetes.io/hostname
标签。整个设置假设这个标签等于节点名称,结果是错误的,因为节点名称和 hostname
在某些情况下是不同的。有关更多信息,请参阅 #61410。这也解释了为什么使用它的示例仅与文档中的 DaemonSet 有关。
因为 PR #62002 已合并,将 MatchFields
添加到 NodeSelectorTerm
以及解释仅支持 metadata.name
的发行说明:
Added `MatchFields` to `NodeSelectorTerm`; in 1.11, it only support `metadata.name`.
所以在撰写本文时,唯一受支持的字段是 metadata.name
。我也检查过 tests code,看来这种行为直到现在都没有改变。
PS。请注意,这仅适用于 NodeSelector
,不适用于 PodAffinity/PodAntiAffinity
我想将 podAffinity 与 matchFields 一起使用。 在网上我只找到字段 metadata.name :
的例子- matchFields:
- key: metadata.name
operator: NotIn
values:
- worker-1
我想知道是否还有其他有效的节点字段我可以使用并且how/where我能找到它们吗?
提前致谢
我做了一些挖掘,发现 Matchfields
是由于调度 DaemonSets
的问题而引入的。创建 pod 的控制器依赖于节点上的 kubernetes.io/hostname
标签。整个设置假设这个标签等于节点名称,结果是错误的,因为节点名称和 hostname
在某些情况下是不同的。有关更多信息,请参阅 #61410。这也解释了为什么使用它的示例仅与文档中的 DaemonSet 有关。
因为 PR #62002 已合并,将 MatchFields
添加到 NodeSelectorTerm
以及解释仅支持 metadata.name
的发行说明:
Added `MatchFields` to `NodeSelectorTerm`; in 1.11, it only support `metadata.name`.
所以在撰写本文时,唯一受支持的字段是 metadata.name
。我也检查过 tests code,看来这种行为直到现在都没有改变。
PS。请注意,这仅适用于 NodeSelector
,不适用于 PodAffinity/PodAntiAffinity