在 Kubernetes 中,副本集的真正用途是什么?

sam*_*ers 4 kubernetes kubernetes-pod

我知道 k8s 资源的层次结构顺序。简单来说,

  1. 服务:服务是将应用程序暴露给外部世界(或集群中)的东西。( CluserIp、NodePort、Ingress 等服务 类型与这个问题没有太大关系。)
  2. 部署:部署负责保持一组 Pod 运行。
  3. 副本集:部署反过来依赖副本集来保持 Pod 集运行。
  4. pod: - 一个 pod 由一个容器或一组容器组成
  5. 容器- 实际所需的应用程序在容器内运行。

在这个问题中我想强调的是,为什么我们有replicaset. 为什么不deployment直接处理或负责保持所需数量的 Pod 运行。但deployment反过来又依赖replicset于此。

如果 k8s 是这样设计的,那么肯定会有一些好处replicaset。这就是我想要深入探索/理解的。

小智 6

两者本质上都有相同的目的。部署是一个更高的抽象,顾名思义,它涉及创建、维护和升级部署(pod 的集合)作为一个整体。然而,ReplicationControllers 或副本集的主要职责是维护一组相同的副本(您也可以使用部署以声明方式实现,但它在内部创建一个副本集来实现此目的)。

更具体地说,当您尝试对部署执行“滚动”更新(例如更新映像版本)时,部署会在内部创建新的副本集并执行转出。在推出期间,您可以看到同一部署的两个副本集。换句话说,Deployment 需要对副本集进行较低级别的“封装”来实现这一点。 在此输入图像描述