ReplicaSet的认识
介绍
ReplicaSet和ReplicationController一样,可以管理pod的运行数量,故障重启等,但是相比后者,它的pod选择器功能更强,ReplicationController的标签选择器只允许包含某个标签的匹配 pod,但ReplicaSet 的选择器还允许匹配缺少某个标签的 pod,或包含特定标签名的 pod,不管其值如何。
它们的功能:
- 确保一 个pod (或多个pod副本)持续运行,方法是在现有 pod 丢失时启动一个新pod。
- 集群节点发生故障时,它将为故障节点上运行的所有 pod (即受其控制的节点上的那些 pod) 创建替代副本。
- 它能轻松实现 pod的水平伸缩(增加或减少pod副本数量)
创建ReplicaSet
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: kubia
spec:
replicas: 3
selector:
matchLabels: # 比较简单的选择器,类似ReplicationController的选择器
app: kubia
template:
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: arrowarcher/kubia
可以给选择器添加额外的表达式。如示例,每个表达式都必须 包含一个key、一个operator (运算符),并且可能还有一个values的列表(取决于运算符)。
selector:
matchExpressions:
- key: app # 包含'app'标签名的pod
operator: In
values:
- kubia # 标签的值是kubia
四个有效的运算符:
- In : Label的值必须与其中一个指定的values 匹配。
- NotIn: Label的值与任何指定的values 不匹配。
- Exists : pod 必须包含一个指定名称的标签(值不重要)。使用此运算符时,
不应指定 values字段。 - DoesNotExist : pod不得包含有指定名称的标签。values属性不得指定 。
如果你指定了多个表达式,则所有这些表达式都必须为true才能使选择器与
pod匹配。如果同时指定matchLabels和matchExpressions,则所有标签都
必须匹配,并且所有表达式必须计算为true以使该pod与选择器匹配。
删除ReplicaSet
kubectl delete rs kubia
会删除所有管理的pod。