这是我参与更文挑战的第10天,活动详情查看: 更文挑战
七 控制器配置清单
7.1 ReplicaSet 控制器
详见:kubectl explain replicaset
- 清单规范
apiVersion <string> # api 版本号,一般为 apps/v1
kind <string> # 资源类别,标记创建什么类型的资源
metadata <Object> # POD 元数据
spec <Object> # 元数据
复制代码
7.1.1 replicaset.spec 规范
-
replicas 副本数量,指定一个数字
-
selector 标签选择器,可以使用 matchLabels、matchExpressions 两种类型的选择器来选中目标 POD
matchLabels:直接给定键值
matchExpressions:基于给定的表达式来定义使用标签选择器:{key:"KEY",operator:"OPERATOR",value:[VAL1,VAL2,...]}
使用 key 与 value 进行 operator 运算,复合条件的才被选择
操作符:
In、NotIn:其 value 列表必须有值
Exists、NotExists:其 value 必须为空
复制代码
- template 模板,这里面定义的就是一个 POD 对象,这个对象只包含了 pod.metadata 和 pod.spec 两部分。
7.1.2 清单示例
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myrs
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: myapp
release: canary
template:
metadata:
name: myapp-pod # 这个其实没用,因为创建的 POD 以 rs 的名字开头
labels:
app: myapp # 标签一定要符合 replicaset 标签选择器的规则,否则将陷入创建 pod 的死循环,直到资源耗尽
release: canary
spec:
containers:
- name: myapp-containers
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80
复制代码
7.2 Deployment控制器
Deployment 通过控制 ReplicaSet 来实现功能,除了支持 ReplicaSet 的扩缩容意外,还支持滚动更新和回滚等,还提供了声明式的配置,这个是我们日常使用最多的控制器。它是用来管理无状态的应用。
Deployment 在滚动更新时候,通过控制多个 ReplicaSet 来实现,ReplicaSet 又控制多个 POD,多个 ReplicaSet 相当于多个应用的版本。
喜欢就支持一下吧
相关推荐