kubectl rollout可以对Deployment、DaemonSet和StatefulSet进行控制,这篇文章以Deployment为例,对控制方式进行说明。

rollout常见操作

子命令 功能说明
history 查看rollout操作历史
pause 将提供的资源设定为暂停状态
restart 重启某资源
resume 将某资源从暂停状态恢复正常
status 查看rollout操作状态
undo 回滚前一rollout

事前准备

使用如下YAML文件创建Deployment

[root@host131 Deployment]# cat v1.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: busybox-deployment-v1
spec:replicas: 3selector:matchLabels:app: busybox-v1template:metadata:labels:app: busybox-v1spec:containers:- name: busybox-hostimage: busybox:1.31.1command: ["sleep"]args: ["1000"]
...
[root@host131 Deployment]#

创建Deployment并确认

[root@host131 Deployment]# kubectl create -f v1.yaml
deployment.apps/busybox-deployment-v1 created
[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           7s    busybox-host   busybox:1.31.1   app=busybox-v1
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7bfdbd9656-ch65w   1/1     Running   0          14s   10.254.152.6   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-f68s2   1/1     Running   0          14s   10.254.152.5   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-s6f6j   1/1     Running   0          14s   10.254.152.7   192.168.163.131   <none>           <none>
[root@host131 Deployment]# kubectl exec -it busybox-deployment-v1-7bfdbd9656-ch65w sh
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sleep 10006 root      0:00 sh11 root      0:00 ps -ef
/ # busybox |grep BusyBox
BusyBox v1.31.1 (2019-12-23 19:20:27 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.BusyBox is a multi-call binary that combines many common Unixlink to busybox for each function they wish to use and BusyBox
/ #

操作之:history

子命令 功能说明
history 查看rollout操作历史
[root@host131 Deployment]# kubectl rollout history deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1
REVISION  CHANGE-CAUSE
1         <none>[root@host131 Deployment]#

操作之:status

子命令 功能说明
status 查看rollout操作状态
[root@host131 Deployment]# kubectl rollout status deployment busybox-deployment-v1
deployment "busybox-deployment-v1" successfully rolled out
[root@host131 Deployment]#

操作之:pause

子命令 功能说明
pause 将提供的资源设定为暂停状态
[root@host131 Deployment]# kubectl rollout pause deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1 paused
[root@host131 Deployment]#

可以通过describe命令确认到Progressing的状态:

[root@host131 Deployment]# kubectl describe deployment busybox-deployment-v1 |grep ProgressingProgressing    Unknown  DeploymentPaused
[root@host131 Deployment]#

操作之:resume

子命令 功能说明
resume 将某资源从暂停状态恢复正常
[root@host131 Deployment]# kubectl rollout resume deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1 resumed
[root@host131 Deployment]#

可以通过describe命令确认到Progressing的状态:

[root@host131 Deployment]# kubectl describe deployment busybox-deployment-v1 |grep ProgressingProgressing    True    NewReplicaSetAvailable
[root@host131 Deployment]#

操作之:restart

子命令 功能说明
restart 重启某资源
[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           10m   busybox-host   busybox:1.31.1   app=busybox-v1
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7bfdbd9656-ch65w   1/1     Running   0          10m   10.254.152.6   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-f68s2   1/1     Running   0          10m   10.254.152.5   192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-s6f6j   1/1     Running   0          10m   10.254.152.7   192.168.163.131   <none>           <none>
[root@host131 Deployment]# kubectl rollout history deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1
REVISION  CHANGE-CAUSE
1         <none>[root@host131 Deployment]#
[root@host131 Deployment]# kubectl rollout restart deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1 restarted
[root@host131 Deployment]# kubectl rollout status deployment busybox-deployment-v1
Waiting for deployment "busybox-deployment-v1" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "busybox-deployment-v1" rollout to finish: 1 old replicas are pending termination...
deployment "busybox-deployment-v1" successfully rolled out
[root@host131 Deployment]# kubectl rollout history deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1
REVISION  CHANGE-CAUSE
1         <none>
2         <none>[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           11m   busybox-host   busybox:1.31.1   app=busybox-v1
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS        RESTARTS   AGE   IP              NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7bfdbd9656-ch65w   1/1     Terminating   0          11m   10.254.152.6    192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-f68s2   1/1     Terminating   0          11m   10.254.152.5    192.168.163.131   <none>           <none>
busybox-deployment-v1-7bfdbd9656-s6f6j   1/1     Terminating   0          11m   10.254.152.7    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-kjt5z    1/1     Running       0          25s   10.254.152.10   192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-r9xjk    1/1     Running       0          29s   10.254.152.8    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-vnnhx    1/1     Running       0          27s   10.254.152.9    192.168.163.131   <none>           <none>
[root@host131 Deployment]#

操作之:undo

子命令 功能说明
undo 回滚前一rollout
  • 回滚前状态确认
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                    READY   STATUS    RESTARTS   AGE   IP              NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7c6899456-kjt5z   1/1     Running   0          66s   10.254.152.10   192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-r9xjk   1/1     Running   0          70s   10.254.152.8    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-vnnhx   1/1     Running   0          68s   10.254.152.9    192.168.163.131   <none>           <none>
[root@host131 Deployment]# kubectl exec -it busybox-deployment-v1-7c6899456-kjt5z sh
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sleep 10006 root      0:00 sh11 root      0:00 ps -ef
/ # busybox |grep BusyBox
BusyBox v1.31.1 (2019-12-23 19:20:27 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.BusyBox is a multi-call binary that combines many common Unixlink to busybox for each function they wish to use and BusyBox
/ #
  • 修改配置文件
    修改启动命令的sleep时间以及busybox的版本,详细如下所示
[root@host131 Deployment]# cat v1.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: busybox-deployment-v1
spec:replicas: 3selector:matchLabels:app: busybox-v1template:metadata:labels:app: busybox-v1spec:containers:- name: busybox-hostimage: busybox:1.30.1command: ["sleep"]args: ["10000"]
...
[root@host131 Deployment]#
  • 修改当前Deployment和Pod信息
[root@host131 Deployment]# kubectl apply -f v1.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
deployment.apps/busybox-deployment-v1 configured
[root@host131 Deployment]#
[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           15m   busybox-host   busybox:1.30.1   app=busybox-v1
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS        RESTARTS   AGE     IP              NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-5fd9b98ccc-9h6gd   1/1     Running       0          17s     10.254.152.6    192.168.163.131   <none>           <none>
busybox-deployment-v1-5fd9b98ccc-l67nw   1/1     Running       0          15s     10.254.152.7    192.168.163.131   <none>           <none>
busybox-deployment-v1-5fd9b98ccc-vfkdv   1/1     Running       0          19s     10.254.152.5    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-kjt5z    1/1     Terminating   0          4m25s   10.254.152.10   192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-r9xjk    1/1     Terminating   0          4m29s   10.254.152.8    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-vnnhx    1/1     Terminating   0          4m27s   10.254.152.9    192.168.163.131   <none>           <none>
[root@host131 Deployment]#
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS    RESTARTS   AGE   IP             NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-5fd9b98ccc-9h6gd   1/1     Running   0          45s   10.254.152.6   192.168.163.131   <none>           <none>
busybox-deployment-v1-5fd9b98ccc-l67nw   1/1     Running   0          43s   10.254.152.7   192.168.163.131   <none>           <none>
busybox-deployment-v1-5fd9b98ccc-vfkdv   1/1     Running   0          47s   10.254.152.5   192.168.163.131   <none>           <none>
[root@host131 Deployment]# kubectl exec -it busybox-deployment-v1-5fd9b98ccc-9h6gd sh
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sleep 100006 root      0:00 sh11 root      0:00 ps -ef
/ # busybox |grep BusyBox
BusyBox v1.30.1 (2019-05-09 01:23:43 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.BusyBox is a multi-call binary that combines many common Unixlink to busybox for each function they wish to use and BusyBox
/ #

查看历史信息

[root@host131 Deployment]# kubectl rollout history deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>[root@host131 Deployment]#
  • 回滚
    此处使用不带参数的回滚,表示回滚至上一个版本,也可以指定回滚的具体版本
[root@host131 Deployment]# kubectl rollout undo deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1 rolled back
[root@host131 Deployment]# kubectl rollout status deployment busybox-deployment-v1
deployment "busybox-deployment-v1" successfully rolled out
[root@host131 Deployment]# kubectl rollout history deployment busybox-deployment-v1
deployment.apps/busybox-deployment-v1
REVISION  CHANGE-CAUSE
1         <none>
3         <none>
4         <none>[root@host131 Deployment]#
  • 回滚结果确认
[root@host131 Deployment]# kubectl get deployment -o wide
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS     IMAGES           SELECTOR
busybox-deployment-v1   3/3     3            3           19m   busybox-host   busybox:1.31.1   app=busybox-v1
[root@host131 Deployment]#
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                     READY   STATUS        RESTARTS   AGE     IP              NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-5fd9b98ccc-l67nw   0/1     Terminating   0          4m10s   10.254.152.7    192.168.163.131   <none>           <none>
busybox-deployment-v1-5fd9b98ccc-vfkdv   0/1     Terminating   0          4m14s   <none>          192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-2qbgc    1/1     Running       0          36s     10.254.152.9    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-cwpw7    1/1     Running       0          34s     10.254.152.10   192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-qzh44    1/1     Running       0          39s     10.254.152.8    192.168.163.131   <none>           <none>
[root@host131 Deployment]#
[root@host131 Deployment]# kubectl get pods -o wide
NAME                                    READY   STATUS    RESTARTS   AGE   IP              NODE              NOMINATED NODE   READINESS GATES
busybox-deployment-v1-7c6899456-2qbgc   1/1     Running   0          59s   10.254.152.9    192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-cwpw7   1/1     Running   0          57s   10.254.152.10   192.168.163.131   <none>           <none>
busybox-deployment-v1-7c6899456-qzh44   1/1     Running   0          62s   10.254.152.8    192.168.163.131   <none>           <none>
[root@host131 Deployment]# kubectl exec -it busybox-deployment-v1-7c6899456-2qbgc sh
/ # ps -ef
PID   USER     TIME  COMMAND1 root      0:00 sleep 10006 root      0:00 sh11 root      0:00 ps -ef
/ # busybox |grep BusyBox
BusyBox v1.31.1 (2019-12-23 19:20:27 UTC) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.BusyBox is a multi-call binary that combines many common Unixlink to busybox for each function they wish to use and BusyBox
/ #

Kubernetes基础:使用rollout对Deployment进行控制相关推荐

  1. Kubernetes基础详解

    1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不 ...

  2. kubernetes基础介绍及kubectl常用命令

    kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...

  3. Kubernetes基础组件概述

    本文讲的是Kubernetes基础组件概述[编者的话]最近总有同学问Kubernetes中的各个组件的相关问题,其实这些概念内容在官方文档中都有,奈何我们有些同学可能英文不好,又或者懒得去看,又或者没 ...

  4. Kubernetes基础入门(完整版)

    简介 Kubernetes这个名字源于希腊语,意为"舵手"或"飞行员".k8s这个缩写是因为k和s之间有八个字符.Google在 2014年开源了Kuberne ...

  5. SAP SD基础知识之交货中的控制元素

    SAP SD基础知识之交货中的控制元素 一,交货类型Delivery Type Delivery type控制整个的交货,我们可以在delivery header中看到delivery type: D ...

  6. Kubernetes基础学习(一)

    Kubernetes基础学习 Kubernetes核心组件 Kubernetes核心组件如下: Kubernetes Master部分: etcd保存了整个集群的状态: apiserver提供了资源操 ...

  7. Kubernetes生产实践系列之二十九:Kubernetes基础技术之容器关键技术实践

    一.前言 在文章<Kubernetes生产实践系列之二十八:Kubernetes基础技术之容器关键技术介绍>中,对于Docker容器技术依赖的namespace.cgroup和UnionF ...

  8. 【 js基础 Day2】js的流程控制:分支语句,循环.顺序结构

    复习 JavaScript简称为JS JavaScript是什么? 是一门脚本语言:不需要编译,直接运行 是一门解释性的语言:遇到一样代码就解释一行代码 C#语言是一门面向对象的语言,也是编译语言,是 ...

  9. Kubernetes基础:Deployment中ReplicaSet

    Deployment是通过ReplicaSet来进行Pod的管理的,这篇文章通过一个简单的示例,对此进行说明. Deployment的YAML示例 有如下busybox的Deployment的YAML ...

  10. Kubernetes基础3

    主题 1.运行机制介绍 2.flanel 网络介绍 3.Nginx+tomcat+NFS 实现动静分离 1.运行机制介绍 1.1 master 运行机制 1.1.1 kube-apiserver k8 ...

最新文章

  1. 金字塔式梯度方向直方图(PHOG)
  2. 北风设计模式课程---13、享元模式
  3. 完整案例:实现延迟队列的两种方法
  4. Linux(CentOS 6.5)下配置Mono和Jexus并且部署ASP.NET MVC5
  5. mysql 设置默认值_为什么 Flink 无法实时写入 MySQL?
  6. python 实例方法 类方法_Python实例方法 静态方法 类方法
  7. 2层框架结构柱子间距_框架结构加固方法,这六大要点行之有效!
  8. .Net中的AOP系列之《单元测试切面》
  9. 【详细】MySQL之游标
  10. windows7专业版64位 vmware虚拟机镜像,vmware打开直接能用
  11. 中美线径对照表_中国线径与英美德线规对照表
  12. JAVA学习篇--静态代理VS动态代理
  13. 华中数控808系统说明书_智能制造之高端数控系统龙头
  14. php工具箱mysql启动不_解决php工具箱(phpStudy)Apache启动成功,MySql无法启动的问题...
  15. 2021年超全超详细的最新大数据开发面试题,附答案解析
  16. 使用nw.js将网址打包生成exe可安装程序支持xp系统
  17. 【MATLAB】极坐标绘图 ( Polar Chart 极坐标图 | MATLAB 绘图问题 1 )
  18. Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
  19. KeyError: 2
  20. Macbook Pro 外接显卡实现Tensorflow GPU运行之环境配置(重点)

热门文章

  1. python阳历转阴历,阴历转阳历
  2. 关于认知升级的思考-认知升级是深度思考、认知升级是探索未知
  3. java多个文件下载之压缩包下载
  4. xp系统显示错误1053服务器,使用故障恢复控制台解决XP系统无法启动的常见故障...
  5. TSE2019-The Art, Science, and Engineering of Fuzzing: A Survey
  6. 菌群多样性是如何形成的,与健康的关系,如何改善?
  7. 班级主页效果图html,DW制作网页|html静态页面|班级网页素材|蝶恋花班级主页网站...
  8. CodeForces 711B. Chris and Magic Square(水题)
  9. 使用gca警告: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
  10. 大数据开发学习脑图+学习路线清晰的告诉你!月薪50K很轻松