7-1 使用ReplicaSet控制副本


ReplicaSet

ReplicaSet 的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。

ReplicaSet 的工作原理

RepicaSet 是通过一组字段来定义的,包括一个用来识别可获得的Pod的集合的选择算符,一个用来标明应该维护的副本个数的数值,一个用来指定应该创建新 Pod 以满足副本个数条件时要使用的 Pod 模板等等。每个 ReplicaSet 都通过根据需要创建和 删除 Pod 以使得副本个数达到期望值,进而实现其存在价值。当 ReplicaSet 需要创建 新的 Pod 时,会使用所提供的 Pod 模板。

ReplicaSet 通过 Pod 上的metadata.ownerReferences 字段连接到附属 Pod,该字段给出当前对象的属主资源。ReplicaSet所获得的Pod都在其 ownerReferences字段中包含了属主ReplicaSet的标识信息。正是通过这一连接,ReplicaSet 知道它所维护的 Pod 集合的状态,并据此计划其操作行为。

如何使用

虽然ReplicaSets可以独立使用,但今天它主要被Deployments 用作协调Pod创建、删除和更新的机制。当您使用 Deployment时,您不必担心还要管理它们创建的ReplicaSet。Deployment会拥有并管理它们的 ReplicaSet。

创建 replicaSet.yaml

  1. apiVersion: apps/v1
  2. kind: ReplicaSet
  3. metadata:
  4. name: frontend
  5. labels:
  6. app: nginx
  7. tier: frontend
  8. spec:
  9. # modify replicas according to your case
  10. replicas: 3
  11. selector:
  12. matchLabels:
  13. tier: frontend
  14. template:
  15. metadata:
  16. labels:
  17. tier: frontend
  18. spec:
  19. containers:
  20. - name: nginx
  21. image: nginx
  22. ports:
  23. - containerPort: 80

创建replicaSet:

  1. kubectl apply -f replicaSet.yaml

尝试删除其中一个副本,发现replicaSet会立马新启一个副本来进行维护
image.png