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
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: nginx
tier: frontend
spec:
# modify replicas according to your case
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
创建replicaSet:
kubectl apply -f replicaSet.yaml
尝试删除其中一个副本,发现replicaSet会立马新启一个副本来进行维护