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. k8s~动态生成pvc和pv

    有时,我们不想手动建立pv和pvc,这时,我们可以通过strongClass存储类来帮我们实现,动态建立pvc,并动态为它分配pv存储空间,我们以nfs为例,说一下动态分配在nfs存储截至上建立pv的 ...

  2. JavaFx设置图标(二)

    JavaFx设置图标(二) JavaFX 从入门入门到入土系列 JavaFx设置图标,需要注意,我这里是Maven管理项目 需要将图片放到resources/img/avatar.jpg下 impor ...

  3. 2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小

    2023-11-01:用go语言,沿街有一排连续的房屋.每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小 ...

  4. 兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04

    书接上回,容器数据类型是指一种数据结构.或者抽象数据类型,其实例为其他类的对象. 或者说得更具体一点,它是以一种遵循特定访问规则的方法来存储对象. 容器的大小取决于其包含的基础数据对象(或数据元素)的 ...

  5. 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略

    摘要: 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目实施过程中占据很大的份量,本篇主要介绍数据库级别的性能调优思路和总体策略. 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目 ...

  6. 初学开发必看:何为Git,何为SVN

    摘要:在和客户交流代码开发的过程中,时常会先入为主的交流起Git:但在和很多中小型企业交流的过程,发现SVN的模式也被使用得很频繁.那么两者的具体差异有哪些呢? 本文分享自华为云社区<Git V ...

  7. DevSecOps软件安全开发实践

    摘要:DevSecOps 的理念是将安全防护流程有机地融入传统的 DevOps 流程中,为研发安全提供强有力保证,安全工具支撑研发阶段安全要求落地. 本文分享自华为云社区<DevSecOps软件 ...

  8. 教你3种Kafka的指定副本作为Leader的实现方式

    摘要:因为在我们实际的运维过程中,需要指定某个副本为ISR,但是Kafka中的Leader选举策略并不支持这个功能,所以需要我们自己来实现它. 本文分享自华为云社区<Kafka的指定副本作为Le ...

  9. 小熊派:用OpenHarmory3.0点亮LED

    摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...

  10. Solon 开发进阶,四、启动参数说明

    Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 启动参数,在应用启动后会被静态化(为了内部更高效的利用).比如,想通过体外扩展加载配置, ...