[转帖]20--Deployment常规操作
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常规操作的更多相关文章
- 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + J ...
- postgresql 常规操作以及检查备份
一.建表时,复制源表的信息test=# test=# \d test.t1 Table "test.t1" Column | Type | Collation | Nullable ...
- postgres 常规操作杂记
分布式:1.扩容不方便(数据重分布)2.分布键变更很麻烦3.分布键选择(架构设计)谨慎4.跨库join性能差5.分布式事务性能差6.sql限制多,功能确实多7.应用改造成本巨大8.全局一致性时间点恢复 ...
- MySQL常规操作以及问题
背景 作为一个前端,偶尔搞下后端 要熟悉 SQL 操作,但是一段时间不用 会大部分忘记,之后又要重新查资料 所以自己整理一遍经常用到的 SQL 操作 和使用过程遇到的问题,方便自己快速查阅 一.安装 ...
- FTP服务器常规操作
导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...
- Apache服务器常规操作
导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...
- mysql服务器的常规操作
mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...
- Mongodb常规操作【一】
Mongodb是一种比较常见的NOSQL数据库,数据库排名第四,今天介绍一下Net Core 下,常规操作. 首先下C# 版的驱动程序 "MongoDB.Driver",相关依赖包 ...
- C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码
如下资料是关于C#通过Ado.net对连接数据库并进行添加删除等常规操作的内容. static string sqlcon = "server=.;database=;Integrated ...
- react-native 常规操作
1. 关闭xcode打开模拟器的快捷键 , 等常规操作 https://www.jianshu.com/p/f6723f3406b7
随机推荐
- Eureka:Spring Cloud服务注册和发现组件
Eureka:Spring Cloud服务注册和发现组件 问题总结 Eureka 两大组件? Eureka 服务注册与发现? Eureka Server 集群? Eureka 自我保护机制? 问题答案 ...
- java桌面小闹钟
写了个桌面的小闹钟,在运行环境可以编译,但是打包成jar文件,想用批处理命令直接调用报错"找不到或无法加载主类". 需求 为防止整天久坐,编写一个桌面闹钟.该闹钟功能很简单,一个小 ...
- poweroff详解
linux下poweroff命令详解 reboot.halt.poweroff三条命令意思作用一样 阅读这三个命令的man帮助信息后,发现实现的是相同的功能. 作用: 重启或者关闭系统 语法: reb ...
- libGDX游戏开发之Box2D碰撞(十五)
libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...
- java实现一个录像大师
java实现一个录像大师 javacv从入门到入土系列,发现了个好玩的东西,视频处理,于是我想搞了个屏幕录屏大师,这里我使用javafx进行页面显示. 依赖 <!-- 需要注意,javacv主要 ...
- Mybatis 源码6 结果集映射流程 ,mybatis插件实现原理和基于mybatis插件实现参数化类型TypeHandler
一丶前情回顾 书接上回,下面是SimpleExecutor执行查询的主要逻辑 prepareStatement 实现获取数据库连接, 其中连接是从Transaction.getConnection方法 ...
- 2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。 需保证 返回结果的字典序最小。 要求不能打乱其他字符的相对位置)。 输入:s = “cba
2023-11-29:用go语言,给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次. 需保证 返回结果的字典序最小. 要求不能打乱其他字符的相对位置). 输入:s = &quo ...
- Java 展开或折叠PDF中的书签
PDF中的书签功能可快速定位到指定阅读位置.对多层书签可根据阅读喜好设置层级展开或折叠.本文将通过Java程序代码介绍如何来实现PDF书签展开或折叠. 程序环境 Spire.Pdf.jar( 免费版3 ...
- GaussDB技术解读:应用无损透明(ALT)
本文分享自华为云社区<DTCC 2023专家解读丨GaussDB技术解读系列之应用无损透明(ALT)>,作者: GaussDB 数据库. 近日,在第14届中国数据库技术大会(DTCC 20 ...
- 掌握ROMA Compose,报表清单不秃头
摘要:在没有ROMA Compose之前,完成一个跨数据源的关联查询是一个十分艰巨的任务. 1. ROMA Compose为何诞生 试想这样一个场景,主管让刚入职的小沛明天下班前给他发一份报表.小沛兴 ...