deployment部署pod,也是通过yaml文件的方式部署。deployment通过yaml文件定义需要deploy名称,需要几个pod协助运行,拉取的镜像版本等内容。一般来说一个deployment管理一个pod模板,比如前端和后端就需要分开管理。实际上deployment在底层是利用了replicaset的对象,replicaset直接管理pod。

部署一个deployment:
编写yaml文件–deploy.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: hello-deploy
spec:replicas: 10selector:matchLabels:app: hello-worldminReadySeconds: 10strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1template:metadata:labels:app: hello-worldspec:containers:- name: hello-podimage: nigelpoulton/k8sbook:latestports:- containerPort: 8080

apiversion:指定api版本
kind:指定类型,这里是deployment
metadata:deployment的标签,定义了它的名字为hello-deploy
spec:spec一下都是pod相关的内容。
replicas:副本数量,就是pod数量
selector:deploy管理这个pod的选择标签。这里定义了一个标签app:hello-world
minReadySeconds:最小的准备时间。意思就是每个副本创建之间最小间隔时间,这里为10s
strategy:更新策略。type:更新类型为RollingUpdate。
RollingUpdate:这里有两个定义maxUnavailable和maxSurge。maxUnavailable是最大的不可用的副本,maxSurge是最大的超过期望的副本数的数量。这里两个都为1,意思是我们deploy定义的副本数是10,一般来说就有10个副本同时可用,但是更新的时候,拿一个来更新操作(maxUnavailable),就只有9个可用,同时创建一个新的更新pod(maxSurge),就会出现11个副本数。最终结果就是同时有两个pod更新,11-9=2。如果一个1,一个0的话,应该是一次一个的更新。分别对应下面的两个值。这里我调成了一个1,一个0,所有最大不超过10副本数为0,但是不可用的可以少一个为9。

template是pod模板,下面有个containers是定义容器,指定镜像和名称等。

使用kubectl apploy来是deploy.yaml应用至集群:

kubectl apply -f deploy.yaml

查看该deploy集群情况:

kubectl apply -f deploy.yaml
kubectl describe deploy hello-deploy

查看replicaset:

kubectl get rs

滚动更新

假如我们对我们之前的deploy.ment部署的版本做了更新,并将新的版本做成了一个镜像,取名为nigelpoulton/k8sbook:edge,现在我们需要将应用进行升级。
修改deploy.yaml文件,只需要将容器镜像改成image: nigelpoulton/k8sbook:edge即可,其他不用修改。

升级操作:

kubectl apply -f deploy.yaml --record

加入前面两个参数为1,1的话,这里只能两个两个更新,而且设置了间隔时间为10s,才能下次两个更新。
查看更新过程:

kubectl rollout status deploy hello-deploy

也可以使用:

kubectl get deploy

应用回滚

升级的使用了–record参数,kubernetes会维护该deployment的历史版本,可以查看历史版本信息

kubectl rollout history deployment hello-deploy

前面数字是版本号,版本1是初始版本,2是更新后的版本,操作命令也被记录下来。
这里说一下replicaset,升级后回滚都和它有关,当应用升级后,会产生新的replicaset,但是旧的replicaset还存在,而且保留之前的配置信息。所以当回滚的时候就是启用旧的replicaset进行回滚操作。
查看replicaset:

kubectl get rs

可以看到旧的rs已经没有pod存在。
进行回滚:

kubectl rollout undo deployment hello-world --to-revision=1

这就完成回滚操作了,但是这样和配置文件的镜像内容不符,规范来说还需手动修改yaml文件的镜像内容。

如果需要删除该deployment的话,执行:

kubectl delete -f deploy.yaml

k8s利用deployment部署pod,以及应用更新和回滚操作相关推荐

  1. K8s上的Go服务怎么扩容、发版更新、回滚、平滑重启?教你用Deployment全搞定!

    经过前面不少文章的铺垫,终于可以写这个大家都感兴趣的话题了,在前面两篇文章,我们讲了Kubernetes里的 Pod和 副本集ReplicaSet (RS) 这两个API对象.知道了Pod是Kuber ...

  2. K8s Kubectl基础命令的使用、滚动更新、以及回滚操作

    Kubectl基础命令的使用 kubernetes基本概念 kubectl管理命令 kubectl帮助 Kubectl常用命令的使用 explain edit scale autoscale clus ...

  3. ansible 发部署nginx以及更新、回滚

    ansible 发部署nginx以及更新.回滚 ansible 和 saltstack 一样都是基于 Python 开发的,是比 puppet 和 saltstack 更轻量级的运维自动化工具. 一: ...

  4. kubectl命令使用滚动更新和回滚

    这里写目录标题 Kubectl命令的使用 create get expose delete edit scale autoscale cluster-info describe logs attach ...

  5. k8s集群部署——Pod管理和资源清单

    文章目录 一.Pod管理 二.资源清单 三.Pod生命周期 四.今日报错 一.Pod管理 Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个po ...

  6. k8s部署-39-pod有哪几种部署方式呢?能不能回滚版本呢?带你了解。

    服务部署的时候,有哪几种方式呢?只能是我们前面说的那一种创建-检查通过之后-删除老的服务嘛?下面我们来看看. 部署方式 1.Recreate:创建部署 这种部署方式是删除老的服务之后,再运行新的服务: ...

  7. ansible playbook实战——下发部署nginx以及更新、回滚

    之前介绍了 ansible 的安装配置及实例:http://msiyuetian.blog.51cto.com/8637744/1748143 以及 ansible 的 playbook 详解:htt ...

  8. tomcat自动化部署(拉取\备份、部署、更新、回滚)

    一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打一个压缩包,rz上去:解压 2.缺点 ...

  9. win10升级补丁_Win 10 暂停更新及回滚方法

    前言 前几天微软已经开始向 Win10 用户推送 2018 年四月更新(Version 1803),但是就目前得到的反馈来看,出现的问题还是比较多的. 诸如 Chrome 冻屏.资源管理器崩溃.频繁假 ...

最新文章

  1. mysql indentify by_测试工作中常用到的sql命令!!!
  2. mrunit_使用MRUnit测试Hadoop程序
  3. VIPKID义务援手韦博英语,承接其“嗨英语”部分学员
  4. Python多重继承(一分钟读懂)
  5. Easyui datagrid加载本地Json数据
  6. 《Java核心技术 卷II》笔记——(12)安全加密
  7. c++ 读取二进制bin文件
  8. 办理签证用的在职证明中英文版
  9. linux将pdf转为png,将多页PDF转换为PNG并返回(Linux)
  10. xp系统怎么关闭wmi服务器,教你win10系统wmi服务器怎么关闭
  11. 计算机考研作息时间表,2016考研人:牛人的考研作息时间表
  12. 【中医学】9 方剂-3
  13. 大疆创新2019校招
  14. 常见的弱口令爆破工具
  15. 8255A红绿灯c语言程序,汇编语言的交通灯程序
  16. 活化N-羟基琥珀酰亚胺酯疏水染料CAS: 201998-61-0,BDP 576 NHS溶于极性有机溶剂该试剂是染料的活化N-羟基琥珀酰亚胺酯,与伯氨基和仲氨基具有反应性。
  17. Unity 利用像素点在图片上画线(RawImage)
  18. python统计中文字符_使用 Python 统计中文字符的数量
  19. 学术扫盲之期刊,数据库,会议都是什么
  20. provider: SQL Network Interfaces , error: 26 - Error Locating Server / Instance

热门文章

  1. Ubuntu18.04配置双网卡上网
  2. 软件测试员需要学什么?
  3. 进程4G虚拟内存空间的分配
  4. 【Python3爬虫(二)】【urlib.request模块】【付费代理+auth认证】
  5. 互联网创业公司如何规模化研发团队?
  6. 三傻大闹宝莱坞经典台词
  7. 利用Python探测附近WIFI密码的详细代码
  8. 粒子群算法实战分享-附原版动画PPT(技术分享也可以文艺范?)
  9. jdk1.8中HashMap扰动函数及数组长度为什么是2的n次方介绍
  10. 如何判断Convex Set(凸集)、Convex Function(凸函数)