【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,等方法来完成操作,不过是通 ...
随机推荐
- Struts2 在Action中操作数据
Servlet存储数据的方式 在Servlet中,使用ServletContext对象来存储整个WebApp的数据,ServletContext中直接存储整个WebApp的公共数据,可使用set|ge ...
- Git学习笔记4-分支
参考链接廖雪峰git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136 1.分支创建 创建本地分支: $ git b ...
- sqlserver 数据库 创建不同文件组的数据库
- 08配置基础路径 同时导出一个函数和一个变量 封装微信请求Api
地址===>https://www.bilibili.com/video/av58993009/?p=46 1==>配置基础路径同时导出一个函数和一个变量 var mynetwork= f ...
- Spring(004)-Bean装配
一,问题,Bean找不到 代码 @Component public class DemoClass { public int doSth() { ; } } 测试代码 @RunWith(SpringJ ...
- shell之seq
seq 用于生成从一个数到另一个数之间的所有整数 seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数 例如: 1. -s 指定分隔符,默认分隔 ...
- 刘长峰 js基础讲座笔记 课后作业
1.DataType Assert 数据类型断言 一.typeof : 判断变量的类型 ,返回字符串 typeof a 返回 'undefined' .'boolean' .'string' .' ...
- matlab的plot3()函数、mesh()函数和surf()函数
1.plot3()函数 例1:绘制一条空间折线. x=[0.2,1.8,2.5]; y=[1.3,2.8,1.1]; z=[0.4,1.2,1.6]; figure(1);plot3(x,y,z); ...
- luoguP4551最长异或路径
P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径.然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 # ...
- 【CFGym102059G】Fascination Street(思维DP)
点此看题面 大致题意: 有\(n\)个路灯,每个路灯有一定的建造费用,且建成后可照亮自身及周围距离为\(1\)的两个格子.你可以交换\(k\)次两个路灯的建造费用,求照亮所有格子的最小费用. 题意转换 ...