Replicaset如何包含带有特定标签的豆荚

时间:2019-03-04 16:18:01

标签: kubernetes replicaset pod

如果我给Pod赋予一些特定的标签,并定义复制集说要包含具有相同标签的Pod,则它将包含该Pod。很好,很好。

(我知道吊舱不是要单独创建的,而是应该与部署或副本集一起创建的。.但是,如果部署/复制箱出于某种原因已经在定义中匹配了标签,则部署/复制箱仍然如何包含它们)

但是,这在幕后如何运作?副本集如何知道要包含的Pod,因为它具有相同的标签?可以说,我已经有一个带有这些标签的容器,新创建的副本集如何知道如果容器的容器少于所需数目的容器,那么该容器将被包括在内?

它是否从etcd获取该信息?还是吊舱以某种方式暴露标签?这件事在幕后真的如何运作?

1 个答案:

答案 0 :(得分:0)

如Kubernetes文档中有关ReplicaSet所述。

  

ReplicaSet由字段定义,包括一个选择器,该选择器指定如何标识它可以获取的Pod,许多副本指示其应维护的Pod,以及Pod模板,指定应创建的新Pod的数据。符合副本数标准。然后,ReplicaSet通过创建和删除Pod以达到所需数量来实现其目的。当ReplicaSet需要创建新的Pod时,它将使用其Pod模板。

建议使用PersistKeysToRegistry()代替Deployments

  

Deployment是一个对象,可以拥有副本集并通过声明性的服务器端滚动更新来更新它们及其Pod。尽管ReplicaSets可以独立使用,但如今,它们主要由Deployments用作协调Pod创建,删除和更新的机制。使用部署时,您不必担心管理它们创建的副本集。部署拥有并管理其副本集。因此,建议您在需要副本集时使用部署。

就像您提到的,如果您的ReplicaSets的标签与Pod的标签相匹配,ReplicaSet将控制吊舱。如果您部署具有三个副本的ReplicaSet并且在此之前部署了ReplicaSet,那么RS将仅生成2个带有匹配标签的Pod。在Non-Template Pod acquisitions上有详细说明和示例。

关于它在后台的工作方式,您可以查看Kubernetes Architecture - beyond a black box - Part 1的幻灯片#47-56