【06】Kubernets:资源清单(控制器 - Deployment)
写在前面的话
上一节主要简单的提了一下控制器都有哪些常用的,并且简单的功能是啥,最后一并提了 ReplicaSet 控制器。
但是 ReplicaSet 一般不需要我们直接配置,多以从本节开始,开始学习 K8S 默认的控制器 Deployment。
Deployment 资源清单
和 rs 一样,deployment 我们也可以简写成 deploy,先简单的看下其资源清单的结构,如下表:
| deployment | ||||
|---|---|---|---|---|
| apiVersion | apps/v1 | |||
| kind | Deployment | |||
| metadata | 和其他 metadata 一样,包括 name / labels 等 | |||
| spec | ||||
| minReadySeconds | 最小准备时间 | |||
| paused | 暂停 | |||
| replicas | 副本数量 | |||
| revisionHistoryLimit | 历史版本保存数量,默认 10 | |||
| rollbackTo | ||||
| revision | 回滚到指定版本 | |||
| selector | ||||
| matchExpressions | 标签选择器 | |||
| matchLabels | 标签选择器(一般用这个) | |||
| strategy | ||||
| rollingUpdate | ||||
| maxSurge | 能被同一时间升级允许的最大 Pod 数,可以是数字或百分比 | |||
| maxUnavailable | 同一时间不允许升级数,可以是数字或者百分比 | |||
| type | 选择方式,可以是 RollingUpdate(默认)或者 Recreate | |||
| template | ||||
| metadata | Pod 的 metadata | |||
| spec | Pod 的 spec | |||
Deployment 示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-demo
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: erp
release: stable
template:
metadata:
name: deploy-container
namespace: default
labels:
app: erp
release: stable
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
运行:我们这里将不再使用 create 根据配置文件创建,而是使用 apply 创建:
# 创建
kubectl apply -f deploy-demo.yaml # 查看
kubectl get deploy
kubectl get rs
kubectl get pods
结果如图:

我们说过 Deployment 属于 ReplicaSet 的更上层,所以我们创建 Deploy 之后是可以查看到 ReplicaSet 的,而且根据命名的特点我们也可以发现:
Deploy --> ReplicaSet --> Pod 命令属于一级一级的增加。其中 rs 名字后面的随机数其实际是模板名称的 hash 值。
此时我们可以做个升级测试,修改 yaml 中的镜像版本由 v1 改为 v2:
kubectl apply -f deploy-demo.yaml
再度应用配置查看:
kubectl get pods -l app=erp -w
通过该方法我们可以看到整个过程,完成后查看 rs:
kubectl get rs -o wide
结果如图:

可以看到原来 v1 版本的 rs 在运行变成了 0,而 v2 版本的变成了 2,但是 v1 版本的 rs 并未删除。
这是由于我们保存历史版本的原因,也就是:
kubectl rollout history deployment deploy-demo
结果如图:

使用打补丁的方式直接修改 Pod 数量:
kubectl patch deployment deploy-demo -p '{"spec":{"replicas":3}}'
结果如图:

同样,我们可以使用另外的方法更新,比如更新镜像版本:
kubectl set image deployment deploy-demo myapp=ikubernetes/myapp:v3
结果如图:

在更新过程中,我们可以使用 pause 暂停实现金丝雀发布:
kubectl rollout pause deployment deploy-demo
那么他会根据更新策略进行一次更新后暂停,等待下次 resume 后完全更新:
kubectl rollout resume deployment deploy-demo
这里就不做过多演示了。
同样,回滚历史版本:
kubectl rollout undo deployment deploy-demo --to-revision=2
结果如图:

小结
其实对于 Deployment,我们需要记忆的并不多,因为之前的 Pod 和 RS 中已经将底层的知识记了一遍,我们在这里只是相当于在他的外面继续套了一层套子。
【06】Kubernets:资源清单(控制器 - Deployment)的更多相关文章
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- kubernetes资源清单之Deployment
Deployment为Pod和ReplicaSets提供声明性更新 示例 --- apiVersion: apps/v1 kind: Deployment metadata: name: de ...
- 【07】Kubernets:资源清单(控制器 - DaemonSet)
写在前面的话 前面讲解了 Pod / ReplicaSet / Deployment 的资源清单,我们这里谈一下 DaemonSet 的资源清单. 之前说过,DaemonSet 控制器能够保证资源在每 ...
- 【05】Kubernets:资源清单(控制器 - ReplicaSet)
写在前面的话 从上一章节开始,我们一直在学习关于自主式 Pod 的资源清单编写, 但是自主式 Pod 存在着一个问题,就是和我们直接 docker run 运行 docker 容器一样.如果我们想以集 ...
- 6、kubernetes资源清单之Pod控制器190714
一.Pod控制器的类别 ReplicationController:早期唯一的控制器,已废弃 ReplicaSet:控制Pod满足用户期望副本:标签选择器选择由自己管理的Pod副本:Pod资源模板完成 ...
- 【04】Kubernets:资源清单(pod)
写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...
- 1.k8s概述、安装、名词解释、资源清单
一.k8s概述 1.简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernete ...
- k8s学习笔记之四:资源清单定义入门
第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...
- Kubernetes 学习5 kubernetes资源清单定义入门
一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...
随机推荐
- Mobx总结以及mobx和redux区别
Mobx解决的问题 传统react使用的数据管理库为Redux.Redux要解决的问题是统一数据流,数据流完全可控并可追踪.要实现该目标,便需要进行相关的约束 Redux由此引出dispatch ac ...
- CTF必备技能丨Linux Pwn入门教程——ShellCode
这是一套Linux Pwn入门教程系列,作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 课程回顾>> Linu ...
- 英语NanyangJade南阳玉NanyangJade独山玉
南阳玉NanyangJade又叫做独山玉,独山玉,因产于河南南阳的独山而得名,亦称“南阳玉”. 独山玉是中国四大名玉之一,有南阳翡翠之称,独山玉是一种黝帘石化斜长岩,由多种矿物组成,属多色玉器. 据文 ...
- wpf 工程生成dll
在WPF项目里,当工程里包含窗体时候, 不可以使用类库的方式生产dll,虽然系统支持引用exe 文件,但总是觉得不如dll习惯,后来发现,新建个项目,类型选择“WPF自定义类件库”,名称和工程名称相同 ...
- Django 练习班级管理系统一
创建项目 user_manager 和 app为 app01 models.py 为 from django.db import models # Create your models here. c ...
- SpringBoot使用Swagger2构建API文档
后端开发中经常需要对移动客户端提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导 ...
- Gitlab批量迁移项目
最近接到一个需求,要把一个Gitlab上边的项目全部导入到另外一个Gitlab,借鉴了网上的一个方法,成功实现. 参考链接:https://segmentfault.com/a/11900000159 ...
- 团队项目-Alpha2版本发布
第五次团队作业 序言 所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign 作业要求 https://w ...
- 201871010106-丁宣元 《面向对象程序设计(java)》第四周学习总结
201871010106-丁宣元 <面向对象程序设计(java)>第四周学习总结 正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-da ...
- django学习-数据库配置-创建模型
数据库配置 在mysite/settings.py中,包含了django项目设置的python模块 通常,这个配置文件使用SQLite作为默认数据库.如果你不熟悉数据库,或者只是想尝试下django, ...