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 次 |
最近记录: |