022.掌握Pod-Pod升级和回滚
一 deploymentPod升级和回滚
1.1 deployment升级
1 [root@uk8s-m-01 study]# vi nginx-deployment.yaml
2 apiVersion: apps/v1beta1
3 kind: Deployment
4 metadata:
5 name: nginx-deployment
6 spec:
7 replicas: 3
8 template:
9 metadata:
10 labels:
11 app: nginx
12 spec:
13 containers:
14 - name: nginx
15 image: nginx:1.7.9
16 ports:
17 - containerPort: 80
18
19 [root@uk8s-m-01 study]# kubectl create -f nginx-deployment.yaml
20 [root@uk8s-m-01 study]# kubectl get pods

1 [root@uk8s-m-01 study]# kubectl get deployment #查看deployment
2 [root@uk8s-m-01 study]# kubectl set image deployment/nginx-deployment nginx=nginx:1.8.1 #命令更新
3 [root@uk8s-m-01 study]# kubectl get pods #查看升级后的pod

1 [root@uk8s-m-01 study]# kubectl edit deployment/nginx-deployment #直接编辑deployment

1 [root@uk8s-m-01 study]# kubectl rollout status deployment/nginx-deployment #查看升级情况

1 [root@uk8s-m-01 study]# kubectl get pods
2 [root@uk8s-m-01 study]# kubectl describe pod nginx-deployment-7448597cd5-8sng2 | grep Image

1.2 deployment升级原理
1 [root@uk8s-m-01 study]# kubectl describe deployments/nginx-deployment #观察Deployment的更新过程
1 [root@uk8s-m-01 study]# kubectl get rs #查看多次升级的结果

1.3 deployment升级策略
- Recreate:设置spec.strategy.type=Recreate,表示Deployment在更新Pod时,会先杀掉所有正在运行的Pod,然后创建新的Pod。
- RollingUpdate:设置spec.strategy.type=RollingUpdate,表示Deployment会以滚动更新的方式来逐个更新Pod。同时,可以通过设置spec.strategy.rollingUpdate下的两个参数(maxUnavailable和maxSurge)来控制滚动更新的过程。
- spec.strategy.rollingUpdate.maxUnavailable:用于指定Deployment在更新过程中不可用状态的Pod数量的上限。 该maxUnavailable的数值可以是绝对值(例如5)或Pod期望的副本数的百分比(例如10%),如果被设置为百分比,那么系统会先以向下取整的方式计算出绝对值(整数)。而当另一个参数maxSurge被设置为0时,maxUnavailable则必须被设置为绝对数值大于0。举例来说,当maxUnavailable被设置为30%时,旧的ReplicaSet可以在滚动更新开始时立即将副本数缩小到所需副本总数的70%。一旦新的Pod创建并准备好,旧的ReplicaSet会进一步缩容,新的ReplicaSet又继续扩容。整个过程中系统在任意时刻都可以确保可用状态的Pod总数至少占Pod期望副本总数的70%。
- spec.strategy.rollingUpdate.maxSurge:用于指定在Deployment更新Pod的过程中Pod总数超过Pod期望副本数部分的最大值。该maxSurge的数值可以是绝对值(例如5)或Pod期望副本数的百分比(例
- 如10%)。如果设置为百分比,那么系统会先按照向上取整的方式计算出绝对数值(整数)。举例来说,当maxSurge的值被设置为30%时,新的ReplicaSet可以在滚动更新开始时立即进行副本数扩容,只需要保证新旧ReplicaSet的Pod副本数之和不超过期望副本数的130%即可。一旦旧的Pod被杀掉,新的ReplicaSet就会进一步扩容。在整个过程中系统在任意时刻都能确保新旧ReplicaSet的Pod副本总数之和不超过所需副本数的130%。
1.4 deployment回滚
1 [root@uk8s-m-01 study]# kubectl rollout history deployment/nginx-deployment #查看部署历史
2 [root@uk8s-m-01 study]# kubectl rollout history deployment/nginx-deployment --revision=3 #查看对应的部署历史版本
3 [root@uk8s-m-01 study]# kubectl rollout history deployment/nginx-deployment --revision=2 #查看对应的部署历史版本

1 [root@uk8s-m-01 study]# kubectl rollout undo deployment/nginx-deployment --to-revision=2 #回滚版本
2 [root@uk8s-m-01 study]# kubectl describe deployment/nginx-deployment
1.5 暂停和恢复deployment
1 [root@uk8s-m-01 study]# kubectl get deployments #查看deployment
2 [root@uk8s-m-01 study]# kubectl get rs #查看rs
3 [root@uk8s-m-01 study]# kubectl rollout pause deployment/nginx-deployment #暂停deployment
4 [root@uk8s-m-01 study]# kubectl set image deployment/nginx-deployment nginx=nginx:1.10.3 #升级操作,但由于暂停deployment,因此不会触发更新
5 [root@uk8s-m-01 study]# kubectl rollout history deployment/nginx-deployment #查看历史版本
6 [root@uk8s-m-01 study]# kubectl set resources deployment/nginx-deployment -c=nginx --limits=cpu=200m,memory=512Mi
7 [root@uk8s-m-01 study]# kubectl rollout resume deployment/nginx-deployment #恢复deployment
8 [root@uk8s-m-01 study]# kubectl get rs
9 NAME DESIRED CURRENT READY AGE
10 nginx-deployment-7448597cd5 0 0 0 52m
11 nginx-deployment-84bc94dcb7 1 1 0 6s
12 nginx-deployment-b5f766d54 3 3 3 55m
1 [root@uk8s-m-01 study]# kubectl describe deployment/nginx-deployment
2 [root@uk8s-m-01 study]# kubectl describe pods nginx-deployment-84bc94dcb7-hqxkk | grep Image
3 Image: nginx:1.10.3
二 RC升级和回滚
2.1 RC滚动升级
1 [root@uk8s-m-01 study]# vi redis-master-controller-v1.yaml
2 apiVersion: v1
3 kind: ReplicationController
4 metadata:
5 name: redis-master-v1
6 labels:
7 name: redis-master
8 spec:
9 replicas: 1
10 selector:
11 name: redis-master
12 template:
13 metadata:
14 labels:
15 name: redis-master
16 spec:
17 containers:
18 - name: master
19 image: kubeguide/redis-master:1.0
20 ports:
21 - containerPort: 6379
22
23 [root@uk8s-m-01 study]# kubectl create -f redis-master-controller-v1.yaml
1 [root@uk8s-m-01 study]# vi redis-master-controller-v2.yaml #RC升级配置文件
2 apiVersion: v1
3 kind: ReplicationController
4 metadata:
5 name: redis-master-v2
6 labels:
7 name: redis-master
8 version: v2
9 spec:
10 replicas: 1
11 selector:
12 name: redis-master
13 version: v2
14 template:
15 metadata:
16 labels:
17 name: redis-master
18 version: v2
19 spec:
20 containers:
21 - name: master
22 image: kubeguide/redis-master:2.0
23 ports:
24 - containerPort: 6379
- RC的名字(name) 不能与旧RC的名字相同。
- 在selector中应至少有一个Label与旧RC的Label不同, 以标识其为新RC。如上所示新增了一个名为version的Label,以与旧RC进行区分。
1 [root@uk8s-m-01 study]# kubectl rolling-update redis-master-v1 -f redis-master-controller-v2.yaml
2 [root@uk8s-m-01 study]# kubectl rolling-update redis-master-v1 --image=kubeguide/redis-master:2.0 #也可直接命令中升级
2.2 RC回滚
1 [root@uk8s-m-01 study]# kubectl rolling-update redis-master-v1 --rollback
022.掌握Pod-Pod升级和回滚的更多相关文章
- kubernetes Pod的升级与回滚
一:Deployment的升级 1.通过kubectl set image命令为Deployment设置新的镜像名称kubectl set image deployment/nginx-deploym ...
- 浅入Kubernetes(12):Deployment 的升级、回滚
目录 更新 上线 会滚 缩放 Deployment 直接设置 Pod 水平自动缩放 比例缩放 暂停 Deployment 上线 本篇内容讨论 Pod 的更新和回滚,内容不多. 更新 打开 https: ...
- Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)
不多说,直接上干货! HDFS升级和回滚机制 作为一个大型的分布式系统,Hadoop内部实现了一套升级机制,当在一个集群上升级Hadoop时,像其他的软件升级一样,可能会有新的bug或一些会影响现有应 ...
- 9.1 k8s pod版本更新流程及命令行实现升级与回滚
1.创建 Deployment root@k8-deploy:~/k8s-yaml/controllers/deployments# vim nginx-deployment.yaml apiVers ...
- Kubernetes:Pod 升级、回滚
本篇主要讨论如何实现滚动更新和回滚,任意更换版本并且回滚以前的版本(版本更新),而下一章会讨论到 Pod 缩放,根据机器资源自动拓展和收缩应用(自动扩容实例). 本文为作者的 Kubernetes 系 ...
- kubernetes deployment升级和回滚
a.创建deployment pod kubectl run mynginx --image=docker.io/nginx: --record 准备svc文件 apiVersion: v1 kind ...
- Docker & Kubenetes 系列四:集群,扩容,升级,回滚
本篇将会讲解应用部署到Kubenetes集群,集群副本集查看,集群自愈能力演示,集群扩容,滚动升级,以及回滚. 本篇是Docker&Kubenetes系列的第四篇,在前面的篇幅中,我们向Kub ...
- k8s学习笔记(3)- kubectl高可用部署,扩容,升级,回滚springboot应用
前言:上一篇通过rancher管理k8s,部署服务应用扩容,高可用,本篇介绍kubectl命令行部署高可用集群节点,测试升级.扩容等 1.测试环境:3节点k3s,使用其中2节点(ubuntunode1 ...
- 原创|1分钟搞定 Nginx 版本的平滑升级与回滚
Nginx无论是对于运维.开发.还是测试来说,都是日常工作需要掌握的一个知识点,之前也写过不少关于Nginx相关的文章: Nginx服务介绍与安装 Nginx服务配置文件介绍 Nginx配置虚拟主机 ...
随机推荐
- [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字 ...
- Cocos2d-x 学习笔记(15.1) EventDispatcher
EventDispatcher对监听器进行管理,围绕着监听器工作.可以添加.删除.暂停/恢复监听器.分发事件到监听器. 1. 一些成员 /** 把ListenerID和同ID监听器的容器对应 */ s ...
- HDU 6047 Maximum Sequence(贪心+线段树)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...
- 推荐几个IT交流社区
博客园,csdn,掘金,StackOverflow(境外),v2ex,开源中国,简书,头条
- python问题:IndentationError:expected an indented block
Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中.最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分 ...
- 百万年薪python之路 -- 模块
1.自定义模块 1.1.1 模块是什么? 模块就是文件,存放一堆常用的函数和变量的程序文件(.py)文件 1.1.2 为什么要使用模块? 1.避免写重复代码,从文件级别组织程序,更方便管理 2.可以多 ...
- 基于STM32F103和Cube的输入捕获例程
1.开发环境 (1)Cube5.24 (2)Keil5 (3)STM32F103 2.Cube配置 Cube配置很简单,只要打开TIM4通道1的引脚,设置为输入捕获模式,在配置是高或低电平沿触发 TI ...
- mp-vue实现小程序回顶操作踩坑,wx.pageScrollTo使用无效填坑
本来项目都写的差不多了,测试测着侧着就冒出了新的想法,我因为做的是问卷,因此会有用户必答题未答完的可能存在,本来市场部给的需求就是做一个弹窗就好了,她说想要做出跳回到用户未答的第一道题,好吧,既然都这 ...
- mysql的一些常用操作(二)
紧跟上一节,我们创建了四个表: Student.Teacher.Course.Score 接下来就是实际的一些操作了:1.求每门课程的学生人数. select course.cname '课程名称', ...
- vue的数据双向绑定
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...


