selector 字段定义了 Deployment 如何找到要管理的 Pod。
但是,在创建部署时,我已经将 pod 模板指定为部署的一部分。那么,为什么我还需要选择器呢?
它是否应该像服务一样使用,其中 pod 已经单独启动,但后来被置于 Deployment 的保护伞下以一起管理?
ale*_*dov 18
我们可以在kubernetes.io 的部署部分找到这个问题的答案
那么,为什么我还需要选择器呢?
以下引用来自k8s v 1.14 的文档
.spec.selector是一个必填字段,用于指定此部署所针对的 Pod 的标签选择器。
.spec.selector必须匹配.spec.template.metadata.labels,否则会被 API 拒绝。在 API 版本 apps/v1 中,如果未设置,.spec.selector 和 .metadata.labels 不会默认为 .spec.template.metadata.labels。所以他们必须明确设置。另请注意,在 apps/v1 中创建部署后 .spec.selector 是不可变的。
如果模板与 .spec.template 不同,或者此类 Pod 的总数超过 .spec.replicas,Deployment 可能会终止标签与选择器匹配的 Pod。如果 Pod 的数量少于所需的数量,它会使用 .spec.template 调出新的 Pod。
Pods 已经被单独启动,但后来被带到 Deployment 的保护伞下一起管理?
简单地说,没有
注意:您不应直接通过创建 another
Deployment或通过创建另一个控制器(例如 aReplicaSet或 a ) 来创建标签与此选择器匹配的其他 podReplicationController。如果这样做,第一个会Deployment认为它创建了这些其他 pod。Kubernetes不会阻止您这样做。如果您有多个具有重叠选择器的控制器,则这些控制器将相互冲突并且无法正常运行。
| 归档时间: |
|
| 查看次数: |
14216 次 |
| 最近记录: |