https://www.cnblogs.com/caodan01/p/15309966.html

一、Deployment滚动更新

1、更新配置清单

# 滚动更新:先生成新pod,后删除旧pod
[root@k8s-m-01 k8s]# vim deploy-nginx.yml
kind: Deployment
apiVersion: apps/v1
metadata:
name: test1-deploy
spec:
selector:
matchLabels:
app: deployment
template:
metadata:
labels:
app: deployment
spec:
containers:
- name: nginx
image: nginx [root@k8s-m-01 k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-deploy-549486578f-xntvw 1/1 Running 0 5m36s [root@k8s-m-01 k8s]# vim deploy-nginx.yml
... ...
containers:
- name: nginx
image: nginx:1.18 #修改版本1.18 [root@k8s-m-01 k8s]# kubectl apply -f deploy-nginx.yml
deployment.apps/test1-deploy unchanged [root@k8s-m-01 k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test1-deploy-c7779f765-gxgp5 1/1 Running 0 8m13s

2、设置镜像 kubectl set image

[root@k8s-m-01 k8s]# kubectl set image deployment/test1-deploy nginx=nginx:latest

[root@k8s-m-01 k8s]# kubectl set image deployment/test1-deploy nginx=nginx:latest
deployment.apps/test1-deploy image updated [root@k8s-m-01 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
test1-deploy-76684b764-htc9n 1/1 Running 0 26s 10.244.2.100 k8s-n-02 <none> <none> #名字不一样了,已更新

3、打标签 kubectl patch

[root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.18"}]}}}}'
deployment.apps/test1-deploy patched [root@k8s-m-01 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP
test1-deploy-76684b764-htc9n 0/1 Terminating 0 9m1s 10.244.2.100 k8s-n-02 <none> <none> #旧的即将删除
test1-deploy-c7779f765-xsbf8 1/1 Running 0 24s 10.244.2.101 k8s-n-02 <none> <none>

4、修改资源 kubectl edit

[root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
... ...template:
metadata:
creationTimestamp: null
labels:
app: deployment
spec:
containers:
- image: nginx:latest #修改成需要的版本
imagePullPolicy: Always
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
[root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
deployment.apps/test1-deploy edited [root@k8s-m-01 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP
test1-deploy-76684b764-zwmx2 1/1 Running 0 2m49s 10.244.2.102 k8s-n-02 <none> <none>

二、Deployment应用回滚

1、查看更新的版本

#为了实验清楚,先删掉
[root@k8s-m-01 k8s]# kubectl delete -f /k8s/deploy-nginx.yml
deployment.apps "test1-deploy" deleted #再去创建,当前是1.18版本
[root@k8s-m-01 k8s]# kubectl apply -f deploy-nginx.yml
deployment.apps/test1-deploy created #去更新版本
[root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:latest"}]}}}}'
deployment.apps/test1-deploy patched #再进行更新
[root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"template":{"spec":{"containers":[{"name":"nginx","image":"nginx:1.19"}]}}}}'
deployment.apps/test1-deploy patched #查看更新的版本
[root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
deployment.apps/test1-deploy
REVISION CHANGE-CAUSE
1 <none>
2 <none>
3 <none> #共3个版本

2、根据版本回滚

2种方式

1、回滚到上一个版本
[root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy
deployment.apps/test1-deploy rolled back
[root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
deployment.apps/test1-deploy
REVISION CHANGE-CAUSE
1 <none>
3 <none>
4 <none> #回滚后,会变成上面的2版本,而重新生成一个4版本 #再来回滚一次
[root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy
deployment.apps/test1-deploy rolled back
[root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
deployment.apps/test1-deploy
REVISION CHANGE-CAUSE
1 <none>
4 <none>
5 <none>
2、回滚到指定版本
[root@k8s-m-01 k8s]# kubectl rollout undo deployment test1-deploy --to-revision=1
deployment.apps/test1-deploy rolled back [root@k8s-m-01 k8s]# kubectl rollout history deployment test1-deploy
deployment.apps/test1-deploy
REVISION CHANGE-CAUSE
4 <none>
5 <none>
6 <none> #6=1

三、Deployment弹性扩容

1、编辑资源

[root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
... ...spec:
progressDeadlineSeconds: 600
replicas: 1 #修改成2
revisionHistoryLimit: 10
selector:
matchLabels:
app: deployment
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
... ...
[root@k8s-m-01 k8s]# kubectl edit deployments.apps test1-deploy
deployment.apps/test1-deploy edited [root@k8s-m-01 k8s]# kubectl get pods
NAME READY STATUS RESTARTS
test1-deploy-776d6f99f5-87fvz 1/1 Running 0 3m59s
test1-deploy-776d6f99f5-fjq5k 1/1 Running 0 36s

2、打标签

[root@k8s-m-01 k8s]# kubectl patch deployments.apps test1-deploy -p '{"spec":{"replicas":1}}'
deployment.apps/test1-deploy patched [root@k8s-m-01 k8s]# kubectl get pods
NAME READY STATUS RESTARTS
test1-deploy-776d6f99f5-87fvz 1/1 Running 0 8m3s #此时缩容成1个

3、scale

[root@k8s-m-01 k8s]# kubectl scale deployment test1-deploy --replicas=3
deployment.apps/test1-deploy scaled
[root@k8s-m-01 k8s]# kubectl get pods
NAME READY STATUS RESTARTS
test1-deploy-776d6f99f5-669qf 1/1 Running 0 7s
test1-deploy-776d6f99f5-87fvz 1/1 Running 0 10m
test1-deploy-776d6f99f5-fg72r 1/1 Running 0 7s

[转帖]20--Deployment常规操作的更多相关文章

  1. 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)

    有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + J ...

  2. postgresql 常规操作以及检查备份

    一.建表时,复制源表的信息test=# test=# \d test.t1 Table "test.t1" Column | Type | Collation | Nullable ...

  3. postgres 常规操作杂记

    分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...

  4. MySQL常规操作以及问题

    背景 作为一个前端,偶尔搞下后端 要熟悉 SQL 操作,但是一段时间不用 会大部分忘记,之后又要重新查资料 所以自己整理一遍经常用到的 SQL 操作 和使用过程遇到的问题,方便自己快速查阅 一.安装 ...

  5. FTP服务器常规操作

    导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...

  6. Apache服务器常规操作

    导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...

  7. mysql服务器的常规操作

    mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...

  8. Mongodb常规操作【一】

    Mongodb是一种比较常见的NOSQL数据库,数据库排名第四,今天介绍一下Net Core 下,常规操作. 首先下C# 版的驱动程序 "MongoDB.Driver",相关依赖包 ...

  9. C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码

    如下资料是关于C#通过Ado.net对连接数据库并进行添加删除等常规操作的内容. static string sqlcon = "server=.;database=;Integrated ...

  10. react-native 常规操作

    1.  关闭xcode打开模拟器的快捷键 , 等常规操作 https://www.jianshu.com/p/f6723f3406b7

随机推荐

  1. OpenEuler22.03安装最新版本Docker

    一.环境及问题 操作系统环境如下: 操作系统:OpenEuler 22.03 LTS 安装方式:最小化安装 在操作系统安装完毕如果直接采用dnf或者yum方式安装docker: sudo dnf in ...

  2. React jsx 语法解析 & 转换原理

    jsx介绍 jsx是一种JavaScript的语法扩展(eXtension),也在很多地方称之为JavaScript XML,因为看起就是一段XML语法,用于描述UI界面,并且可以和JavaScrip ...

  3. cookie和session的一些疑惑以及ai解答

    我: 那么当浏览器关闭的时候,当再次访问这个地址的时候,为什么之前设置的cookie没有被删除掉?而且按照你说的这次可能会生成一个新的sessionID,那么cookie里面的其他数据,它是如何获取上 ...

  4. Flutter Getx 中的Dialog 以及改变主题

    设置应用程序入口 当我们导入依赖后,在应用程序顶层把 GetMaterialApp 作为顶层,如下所示 import 'package:flutter/material.dart'; import ' ...

  5. java中获取内网IP

    package com.dashan.utils.iputils; import org.apache.commons.lang.StringUtils; import javax.servlet.h ...

  6. Flume快速入门

    Flume快速入门 一.简介 高可用.高可靠,分布式的海量日志采集.聚合和传输系统,基于流式架构,灵活简单. event:事件 source:数据源 sink:目标 channel:数据管道 通过获取 ...

  7. 你应该知道的数仓安全——默认权限实现共享schema

    摘要: 一种典型客户场景是一些用户是数据的生产方,需要在schema中创建表并写入数据:而另一些用户是数据的消费方,读取schema中的数据做分析.使用Alter default privilege语 ...

  8. 揭开KPI异常检测顶级AI模型面纱

    摘要:2020GDE全球开发者大赛-KPI异常检测告一段落,来自深圳福田莲花街道的"原子弹从入门到精通"有幸取得了总榜TOP1的成绩,在这里跟大家分享深圳福田莲花街道在本次比赛的解 ...

  9. SpringBoot 记录 access.log 日志

    如何将不同业务模块产生的日志 分多文件记录 Tomcat 中有个日志 loca_access.log 可以记录每个接口的请求耗时,用于做性能等分析比较有用,SpringBoot里,默认不记录这个日志, ...

  10. Bug生命周期

    新建,确认,解决,重新验证,关闭,重新打开 一个Bug由测试人员发现并提交,我们将状态标注为新建:开发人员接收了该Bug,将Bug的状态修改为已分配,表示已经认可:开发人员解决了该bug后,就将bug ...