目录
一,Replicaset控制器
Replicaset是副本控制器,简称rs,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。当pod副本被删除时,会重新创建新的副本。官方不建议直接使用Replicaset,使用Deployment取而代之。
二,Deployment控制器,Reployment控制器,pod资源之间的关系
Deployment是比ReplicaSet更高级的概念,可以调用ReplicaSet管理pod对象。因此是由Deployment管理ReplicaSet,再由ReplicaSet负责管理pod对象,
Deployment作用:除了可以调用ReplicaSet之外还可以提供升级回滚的功能。
三,工作原理:
直接在命令行通过纯命令的方式完成对应资源版本的内容的修改。
滚动更新需要加:readinessProbe和livenessProbe探测Deployment功能:1,创建RplicaSet和pod
2,滚动升级(不停止旧服务的状态下升级)和回滚应用(将应用归滚到之前的版本)
3,平滑地扩容和缩容
4,暂停和继续Deployment
四,Deployment资源清单文件编写技巧:
apiVersion: apps/v1 版本号
kind: Deployment 说明资源类型
metadata: 属性信息
name: nginx-deployment Deployment名字
labels: 设置标签
app: nginx 标签
spec:
replicas: 3 创建几个副本
selector: 标签选择器
matchLabels: 匹配标签
app: nginx 匹配模板中的标签(与模板中的标签一样)
template: 定义pod的模板,通过模板创建pod
metadata: 属性信息
labels: 设置标签
app: nginx 模板标签
spec: 定义Deployment规格
containers: 对象列表
- name: nginx 名字
image: nginx:1.14.2 镜像名字
ports:
- containerPort: 80 暴露端口
五,Deployment管理pod:扩容,缩容,滚动更新,回滚
如果扩容则将yaml文件中的replicas:3更改为更大的,如果缩容则将数字改为更小的。即可
滚动更新:将yaml文件中的spec内的image改为之前的版本即可。
自定义滚动更新策略:maxSurge和maxUnavailable用来控制滚动更新的更新策略
按数值
1,maxUnavaliable:[0,副本数]
2,maxSurge:[0,副本数]
建议配置
1 maxUnavailable == 0
2,maxSurge == 1
自定义策略:
修改更新策略:maxUnavailable=1,maxSurge=1
六,创建实例
[root@hd1~ ]# cat deploy-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-v1
spec:
replicas: 3
selector:
matchLabels:
app: myapp
version: v1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: myapp
version: v1
spec:
containers:
- name: myapp
image: janakiramm/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
执行上面的yaml文件[root@hd1 ~]# kubectl apply -f deploy-demo.yaml