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. LXC、LXD、Docker的区别与联系(by quqi99)

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔 ...

  2. Swift 3 实现拍照功能

    编辑.plist文件,添加两个key-value,打开相机和相册的访问权限1) 申请相机权限: <key>NSCameraUsageDescription</key> < ...

  3. ss-libev 源码解析local篇(3): server_recv_cb之SNI和STAGE_PARSE

    上一篇看到STAGE_HANDSHAKE中的处理,到发出fake reply.这之后会从socks5 request中解析出remote addr and port,即客户端实际想要访问的服务器地址和 ...

  4. C# 超级狗 二次开发 读写数据 激活验证 存储数据库连接字符串

    本文主要讲解如果使用C#语言来对超级狗进行二次开发,如果仅仅是做个激活的功能,可以参照另一篇博客,地址:http://www.cnblogs.com/dathlin/p/8487842.html 如果 ...

  5. 【pandas】pandas.Series.str.split()---字符串分割

    原创博文,转载请注明出处! 本文代码的github地址       series中的元素均为字符串时,通过str.split可将字符串按指定的分隔符拆分成若干列的形式. 例子: 拆分以逗号为分隔符的字 ...

  6. 编程之美Ex1——求二进制中1的个数

    又被阿里机考虐了一次,决定改变策略开始刷题T^T 一个字节(8bit)的无符号整型,求其二进制中的“1”的个数,算法执行效率尽可能高. 最先想到的移位操作,末尾位&00000001,然后右移, ...

  7. Windows下ruby安装和ri设置

    1. ruby最强大的web框架ruby on rails .必学的.所以可以直接安装RailsInstaller. 地址:http://www.railsinstaller.org/en .安装过程 ...

  8. Java并发--线程池的使用

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统 ...

  9. Page View Controllers

    Page View Controllers You use a page view controller to present content in a page-by-page manner. A ...

  10. 51nod 1347 旋转字符串

    S[0...n-1]是一个长度为n的字符串,定义旋转函数Left(S)=S[1…n-1]+S[0].比如S=”abcd”,Left(S)=”bcda”.一个串是对串当且仅当这个串长度为偶数,前半段和后 ...