Kubernetes的Deployment对象使用
一、什么是Deployment对象
明明ReplicaSet已经可以控制pod的数量了,为什么还需要Deployment?
简单的说,Deployment控制ReplicaSet的多个版本,ReplicaSet控制Pod个数

Deploymen实际上一个两层控制器,遵循一种滚动更新的方式来实升级现有的容器,这个能力的实现,依赖的就是ReplicaSet这个对象
当我们修改了Deployment对象后,Deployment控制器会使用修改后的模板,创建一个新的ReplicaSet对象,这时候有两个RelicaSet对象,
Deployment通过控制ReplicaSet对象的pod数量来达到滚动升级的效果
例如A和B,如果最终设置的pod数都是3,通过A-1,B+1这样的方式,直到A的pod数量变为0,最终 达到了滚动升级的目的。
同时,因为存在多个ReplicaSet,让回滚成为了可能
二、使用示例
示例yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
template字段,指定了创建pod的模板
replicas指定了pod的节点数量
还有一个 type: RollingUpdate,指定了滚动升级的策略
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
...
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
查看deployments
kubectl get deployments demo2 -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
demo2 2/3 3 2 24d demo2 harbor.eoffcn.com/dev/demo2 workload.user.cattle.io/workloadselector=deployment-web-demo2
UP-TO-DATE:当前处于最新版本的 Pod 的个数,所谓最新版本指的是 Pod 的 Spec 部分与 Deployment 里 Pod 模板里定义的完全一致
AVAILABLE:当前已经可用的 Pod 的个数,即:既是 Running 状态,又是最新版本,并且已经处于 Ready(健康检查正确)状态的 Pod 的个数
READY:前处于 Running 状态的 Pod 的个数/用户期望的 Pod 副本个数
三、查看历史和回滚
查看历史版本
kubectl rollout history deployment ${name}
deployment.extensions/demo2
REVISION CHANGE-CAUSE
1 <none>
2 <none>
3 <none>
4 <none>
查看指定版本
kubectl rollout history deployment ${name} --revision=${version}
回滚到上一版本
kubectl rollout undo deployment ${name}
回滚到指定版本
kubectl rollout undo deployment ${name} --to-revision=${version}
Kubernetes的Deployment对象使用的更多相关文章
- Kubernetes的Job对象
Deployment.StatefulSet及DaemonSet三个主要用来进行长时间业务,不会退出. 而有一些离线业务,或者叫Batch Job(计算业务),计算完成后就直接退出 了,如果用Depl ...
- Kubernetes资源与对象简述
资料 k8s基本对象概念 背景 资源和对象 Kubernetes 中的所有内容都被抽象为"资源",如 Pod.Service.Node 等都是资源."对象" ...
- Kubernetes之deployment
Kubernetes实现了零停机的升级过程.升级操作可以通过使用ReplicationController或者ReplicaSet实现,但是Kubernetes提供了另一种基于ReplicaSet的资 ...
- Kubernetes中Deployment部署故障排除
Kubernetes中Deployment部署故障排除 字符型思维导图 排查pod状态(带标签):kubectl get pods,是否有等待处理的pod? 是?kubectl describe po ...
- 【转】kubernetes 中 deployment 支持哪些键值
这个比较全,可以参考 ================= https://www.addops.cn/post/kubernetes-deployment-fileds.html ========== ...
- 【Kubernetes】Deployment控制器模型
在Kubernetes中,Deployment是最基本的控制器对象 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploym ...
- Kubernetes之Deployment控制器
Deployment 简介 deployment 是用来管理无状态应用的,面向的集群的管理,而不是面向的是一个不可变的个体,举例:有一群鸭子,要吃掉一个,只需要再放一个新的鸭仔就好了,不会影响什么,而 ...
- kubernetes之deployment滚动升级
参考:https://blog.51cto.com/wutengfei/2116663 创建和管理多个Pod--Deployment Deployment 为 Pod 和 ReplicaSet 提供了 ...
- 使用kubernetes的deployment进行RollingUpdate
rolling update,可以使得服务近乎无缝地平滑升级,即在不停止对外服务的前提下完成应用的更新. replication controller与deployment的区别 replicatio ...
随机推荐
- offsetX、clientX、screenX、pageX、layerX
pageX/Y 原点相对于文档窗口左上角. offsetX/Y 原点相对于触发事件元素的左上角,需要注意的是,offset是有负值的,如果你的元素有边框,那么offset会是负值. (黑色为鼠标点击点 ...
- python 实现多个线程间消息队列传递,一个简单的列子
#-*-coding:utf8-*-"""Producer and consumer models: 1. There are many producers and co ...
- HTML 全局属性(摘自菜鸟教程)
HTML 全局属性 New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. class 规定元素的类名(classname) contenteditableNew ...
- 第6章 事务管理 6.1 spring事务
事务管理——原子性.一致性.隔离性.持久性 理解spring对事务管理的支持 Spring提供对编码式和声明式事务管理的支持.编码式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP,面 ...
- HDU 6357 Hills And Valleys
Hills And Valleys 题意:给你一个序列, 可以翻转一次区间 [l, r] 求最大 非递减的 序列长度. 题解:枚举翻转区间,然后匹配. 如果不翻转区间, 那么就相当于用b[] = {0 ...
- NetCore下的HTTP请求IHttpClientFactory
使用方式 IHttpClientFactory有四种模式: 基本用法 命名客户端 类型化客户端 生成的客户端 基本用法 在 Startup.ConfigureServices 方法中,通过在 ISer ...
- 9道JavaScript字符串类面试题
本文来源于笔者的开源项目前端面试与进阶指南 点击关注本公众号获取文档最新更新,并可以领取配套于本指南的 <前端面试手册> 以及最标准的简历模板. 解析 URL Params 为对象 let ...
- 初始mqtt服务
MQTT入门 概念 mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发. 协议格式 mqtt协议控制报文的格式包含三 ...
- Spotlight on Oracle注册码破解(亲测可用)
了解到该工具监控十分强大,该工具优点: 我就是为了监控一个Oracle数据库,查阅各种资料,真是费了十牛二虎之力,才破解完成.#_# 在客户端安装好了,连接监控的服务器,提示得要注册码,这外国的软件基 ...
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...