7.1 实践

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: httpd
spec:
replicas: 3
template:
metadata:
labels:
run: httpd
spec:
containers:
- name: httpd
image: httpd:2.2.31
ports:
- containerPort: 80

使用 kubectl  apply 进行部署。

kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment httpd -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3 3 3 2 3m httpd httpd:2.2.31 run=httpd
kubeusr@GalaxyKubernetesMaster:~$ kubectl get replicaset -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
busybox-577868d55b 1 1 1 1d busybox busybox pod-template-hash=1334248116,run=busybox
httpd-9658687dd 3 3 2 4m httpd httpd:2.2.31 pod-template-hash=521424388,run=httpd

然后将配置文件中的2.2.31 替换为 2.2.32,再执行kubectl apply,

kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
busybox 1 1 1 1 1d busybox busybox run=busybox
httpd 3 4 2 3 11m httpd httpd:2.2.32 run=httpd # 更新成了新版本 kubeusr@GalaxyKubernetesMaster:~$ kubectl get replicaset -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
busybox-577868d55b 1 1 1 1d busybox busybox pod-template-hash=1334248116,run=busybox
httpd-76c8bd9f65 2 2 1 5m httpd httpd:2.2.32 pod-template-hash=3274685921,run=httpd
httpd-9658687dd 2 2 2 12m httpd httpd:2.2.31 pod-template-hash=521424388,run=httpd
kubeusr@GalaxyKubernetesMaster:~$ kubectl describe deployment httpd
Name: httpd
Namespace: default
CreationTimestamp: Sun, 30 Dec 2018 07:37:56 -0500
Labels: run=httpd
Annotations: deployment.kubernetes.io/revision=2
kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1beta1","kind":"Deployment","metadata":{"annotations":{},"name":"httpd","namespace":"default"},"spec":{"replicas":2,"template":{"m...
Selector: run=httpd
Replicas: 2 desired | 2 updated | 3 total | 2 available | 1 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=httpd
Containers:
httpd:
Image: httpd:2.2.32
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True ReplicaSetUpdated
OldReplicaSets: httpd-9658687dd (1/1 replicas created)
NewReplicaSet: httpd-76c8bd9f65 (2/2 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 12m deployment-controller Scaled up replica set httpd-9658687dd to 2
Normal ScalingReplicaSet 53s deployment-controller Scaled up replica set httpd-76c8bd9f65 to 1
Normal ScalingReplicaSet 42s deployment-controller Scaled down replica set httpd-9658687dd to 1
Normal ScalingReplicaSet 42s deployment-controller Scaled up replica set httpd-76c8bd9f65 to 2

7.2 回滚

httpd.v1.yml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: httpd
spec:
revisionHistoryLimit: 10
replicas: 3
template:
metadata:
labels:
run: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.16
ports:
- containerPort: 80

httpd.v2.yml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: httpd
spec:
revisionHistoryLimit: 10
replicas: 3
template:
metadata:
labels:
run: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.17
ports:
- containerPort: 80

httpd.v3.yml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: httpd
spec:
revisionHistoryLimit: 10
replicas: 3
template:
metadata:
labels:
run: httpd
spec:
containers:
- name: httpd
image: httpd:2.4.18
ports:
- containerPort: 80
kubeusr@GalaxyKubernetesMaster:~$ kubectl apply -f httpd.v1.yml --record       # record的作用是将命令记录到revision记录中。
deployment.apps "httpd" configured
kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment httpd -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3 4 2 3 20m httpd httpd:2.4.16 run=httpd
kubeusr@GalaxyKubernetesMaster:~$ kubectl apply -f httpd.v2.yml --record
deployment.apps "httpd" configured
kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment httpd -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3 4 1 3 28m httpd httpd:2.4.17 run=httpd
kubeusr@GalaxyKubernetesMaster:~$ kubectl apply -f httpd.v3.yml --record
deployment.apps "httpd" configured
kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment httpd -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3 4 2 3 29m httpd httpd:2.4.18 run=httpd # 查看历史部署版本
kubeusr@GalaxyKubernetesMaster:~$ kubectl rollout history deployment httpd deployments "httpd"
REVISION CHANGE-CAUSE
1 <none> # 因为之前部署命令中没有record,所以就显示 <none>
2 <none>
3 kubectl apply --filename=httpd.v1.yml --record=true
4 kubectl apply --filename=httpd.v2.yml --record=true
5 kubectl apply --filename=httpd.v3.yml --record=true

如果想回滚到某个版本:

kubeusr@GalaxyKubernetesMaster:~$ kubectl rollout undo deployment httpd --to-revision=3            # 回退到revision=3的那个版本
deployment.apps "httpd"
kubeusr@GalaxyKubernetesMaster:~$ kubectl get deployment httpd -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
httpd 3 4 2 3 37m httpd httpd:2.4.16 run=httpd

第七章 Rolling update的更多相关文章

  1. 第七章Bulk设备

    小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paul ...

  2. Knockout应用开发指南 第七章:Mapping插件

    原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些 ...

  3. 在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(146)

    上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应 ...

  4. 【转】第七章、Linux 文件与目录管理

    原文网址:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php 第七章.Linux 文件与目录管理 最近升级日期:2009/08/26 ...

  5. 【黑金原创教程】【TimeQuest】【第七章】供源时钟与其他

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  6. [书籍翻译] 《JavaScript并发编程》第七章 抽取并发逻辑

    本文是我翻译<JavaScript Concurrency>书籍的第七章 抽取并发逻辑,该书主要以Promises.Generator.Web workers等技术来讲解JavaScrip ...

  7. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二)

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第七章:在Direct3D中绘制(二) 代码工程地址: https:/ ...

  8. 在 Rolling Update 中使用 Health Check【转】

    上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update.试想一下下面的情况: 现有一个正常运行的多副本应 ...

  9. 第七章 Rocketmq--消息驱动

    今天咱们接着 上一篇第六章 Sleuth–链路追踪 继续写 SpringCloud Alibaba全家桶 , 第七章 Rocketmq--消息驱动,废话不多说,开始了 7.1 MQ简介 7.1.1 什 ...

随机推荐

  1. lcx端口转发 linux版

    一.端口转发使用 1.攻击机上执行以下命令 ./lcx -p1 -p2 -m 在本地监听3389端口,并将发送到本机3389端口的数据传递到本机2222端口 2.跳板机上执行以下命令 ./lcx -h ...

  2. Flexible 弹性盒子模型之CSS order 属性

    实例 设置弹性盒对象元素的顺序: div#myRedDIV {order:2;} div#myBlueDIV {order:4;} div#myGreenDIV {order:3;} div#myPi ...

  3. 将glassfish 添加到服务中 ,自启

    将glassfish 添加到服务中 ,自启. 命令: sc create wuziServer binPath= D:\wuzi\wuzi-start.bat start= auto

  4. paddlepaddle初步印象

    从其官网整理了一些资料如下: 1.基本概念 基本使用概念 PaddlePaddle是源于百度的一个深度学习平台.PaddlePaddle为深度学习研究人员提供了丰富的API,可以轻松地完成神经网络配置 ...

  5. 我也说说Emacs吧(6) - Lisp速成

    前面我们学习了基本操作,也走马观花地看了不少emacs lisp的代码.这一章我们做一个lisp的速成讲座. Lisp的含义是表处理语言.它的代码组成结构都是用括号组成的表来表示的.Lisp中的功能, ...

  6. Android逆向之旅---Android中锁屏密码算法解析以及破解方案

    一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机 ...

  7. RxJava 1.x 笔记:过滤型操作符

    我真的是奇怪,上下班的路上看书.看文章学习的劲头特别大,到了周末有大把的学习时间,反而不珍惜,总想打游戏,睡前才踏踏实实地写了篇文章,真是服了自己! 本文内容为 RxJava 官方文档 学习笔记 作者 ...

  8. charles抓包--手机端

    Fiddler和charles都是抓包工具,可以抓到pc端的请求,手机上设置代理后也可以抓到手机上的请求,也可以修改请求数据和返回的数据. 在接口已经使用的时候,比如说已经用到了app上,app端测试 ...

  9. python爬虫入门(6)-Scrapy基本使用

    源码:链接:http://pan.baidu.com/s/1dEK82hb 密码:9flo   创建项目                                 scrapy startpro ...

  10. libcurl使用认证证书 https认证

    在server.xml中增加下面的内容: ciphers="SSL_RSA_WITH_RC4_128_SHA" 下面是libcurl 的测试代码: #include <std ...