选择器字段定义了部署如何查找要管理的Pod。
但是,在创建部署时,我已经将Pod模板指定为部署的一部分。那么,为什么还要选择器呢?
它是否应该像服务一样使用,在这些服务中,pod已经单独启动,但是后来被带到Deployment的保护之下,可以一起进行管理?
选择器字段定义了部署如何查找要管理的Pod。
但是,在创建部署时,我已经将Pod模板指定为部署的一部分。那么,为什么还要选择器呢?
它是否应该像服务一样使用,在这些服务中,pod已经单独启动,但是后来被带到Deployment的保护之下,可以一起进行管理?
Answers:
我们可以在kubernetes.io的“ 部署”部分中找到此问题的答案。
那么,为什么还要选择器呢?
.spec.selector
是必填字段,用于为此部署目标的Pod指定标签选择器。
.spec.selector
必须匹配.spec.template.metadata.labels
,否则将被API拒绝。在API版本apps / v1中,.spec.selector和.metadata.labels如果未设置,则默认不为.spec.template.metadata.labels。因此,必须明确设置它们。还要注意,在apps / v1中创建Deployment后,.spec.selector是不可变的。
如果部署的模板与.spec.template不同,或者其总数超过.spec.replicas,则Deployment可以终止其标签与选择器匹配的Pod。如果Pods的数量少于所需的数量,它将使用.spec.template弹出新的Pod。
吊舱已经单独启动,但后来归入“部署”伞下,以便一起管理?
简而言之,不
注意:不应直接通过创建另一个
Deployment
或通过创建另一个控制器(例如aReplicaSet
或a) 来创建其标签与该选择器匹配的其他容器ReplicationController
。如果这样做,第一个Deployment
认为它创建了这些其他吊舱。Kubernetes
并不能阻止您这样做。如果您有多个具有重叠选择器的控制器,则这些控制器将相互竞争,并且无法正常运行。
.spec.template.metadata.labels
?它的意义是什么,正如spec
下面定义的那样,Deployment
因此很清楚为部署启动了哪些Pod。