ReplicaSets会取代Pod吗?

时间:2019-07-18 14:23:23

标签: kubernetes

我有一个概念性问题,副本集是否使用Pod设置? 在应用副本集之前,我删除了Pod,因此没有有关我的旧Pod的信息吗? 如果我现在应用,那么Replicaset会参考Pod设置,因此对于所有设置(如readinessProbe / livenessProbe ...? 之所以出现我的问题,是因为在我的copysetset.yml中是一个容器部分,在其中指定了我的docker映像,但是为什么它需要该信息,不是多余的信息,因为此信息在我的pods.yml中?

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: test1
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: test1
        image: test/test

2 个答案:

答案 0 :(得分:3)

  

Pod是可部署的最小的计算单元   在Kubernetes中创建和管理。

     

一个Pod(例如在鲸鱼或豌豆荚中)是一个或多个的组   具有共享存储/网络的容器(例如Docker容器),   以及有关如何运行容器的规范。

请参见https://kubernetes.io/docs/concepts/workloads/pods/pod/

因此,您可以指定Pod的调度方式(一个或多个容器,端口,探针,卷等)。 但是,如果发生节点故障或任何可能损坏Pod的不良情况,则不会重新安排该Pod的时间(您必须手动重新安排时间)。因此,在这种情况下,您需要一个控制器。 Kubernetes提供了一些控制器(每个控制器用于不同的目的)。他们是-

  1. ReplicaSet
  2. ReplicationController
  3. Deployment
  4. StatefulSet
  5. DaemonSet
  6. Job
  7. CronJob

以上所有控制器和Pod一起称为工作负载。因为它们都有一个podTemplate部分。并且它们都创建由spec.replicas字段指定的一定数量的相同Pod驴(如果此字段存在于相应的工作负载清单中)。它们都是Pod的上层概念。

  

尽管DeploymentReplicaSet更适合,但此问题的重点是ReplicaSet上的Pod,因为问题在Pod和{{之间1}}。

此外,上述每个控制器都有其自己的用途。就像ReplicaSet的目的一样,是保持一组稳定的副本Pod在任何给定时间运行。因此,它通常用于保证指定数量的相同Pod的可用性。

副本集包含一个ReplicaSet字段,其中包括用于标识和获取Pod的选择器。一个Pod模板,用于指定应创建的新Pod的配置,以满足副本标准的数量。它会根据需要创建和删除Pod,以达到所需的数量。当ReplicaSet需要创建新的Pod时,它将使用其Pod模板。

由ReplicaSet维护的Pod具有metadata.ownerReferences字段,以告知哪个资源拥有当前Pod。

ReplicaSet通过使用其选择器标识要获取的新Pod。如果存在一个没有OwnerReference的Pod,或者OwnerReference不是控制器,并且与ReplicaSet的选择器匹配,则该ReplicaSet将立即获取它。

参考:https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

**

现在,是时候回答您的问题了

由于ReplicaSet是Pod控制器之一(上面列出),显然,它需要一个podTemplate(使用此模板,将对Pod进行调度)。 ReplicaSet创建的所有Pod将具有相同的Pod配置(相同的容器,相同的端口,相同的就绪/实时探针,卷等)。并且拥有此podTemplate并不是多余的信息,这是必需的。因此,如果您具有Pod控制器(例如ReplicaSet或其他)(根据需要),则不再需要Pod本身。因为ReplicaSet(或其他控制器)将创建Pod。

**

猜猜,您找到了答案。

答案 1 :(得分:0)

  

副本集可以代替吊舱吗?

是的,如果您有 replicaset.yml ,则不需要 pods.yml

  

我有一个概念性问题,副本集是否使用Pod设置?   在应用副本集之前,我删除了Pod,因此没有   有关我的旧Pod的信息?如果我现在申请,Replicaset会   这是对Pod设置的引用,因此对所有设置(例如   readinessProbe / livenessProbe ...?

否,ReplicaSet清单必须包含Pod规范才能确定应部署的Pod的配置。

使用标签,将ReplicaSet链接到正在运行的Pod。 您不会将ReplicaSet.yml清单链接到Pods.yml清单。

如果可以避免的话,请勿使用裸露的Pod(即未绑定到ReplicaSet或Deployment的Pod)。节点发生故障时,不会重新安排Naked Pod的时间。

在99%的情况下,没有单独的pods.yml清单。 Pod和ReplicaSet是在单个清单中定义的,因此,副本集.yml中的容器部分。