[转帖]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
随机推荐
- OpenEuler22.03安装最新版本Docker
一.环境及问题 操作系统环境如下: 操作系统:OpenEuler 22.03 LTS 安装方式:最小化安装 在操作系统安装完毕如果直接采用dnf或者yum方式安装docker: sudo dnf in ...
- 11、层叠布局(Stack、Align、 Positioned)
Flutter Stack组件 Stack表示堆的意思,我们可以用Stack或者Stack结合Align或者Stack结合 Positiond来实现页面的定位 布局 Alignment(对齐)类是用 ...
- JAVAEE基础知识
JAVAEE基础知识 2018年3月,开源组织Eclipse基金会宣布,JavaEE(Enterprise Edition)被更名为JakartaEE,也就是9版本后改名Jakarta EE,也就是J ...
- Midjourney 注册 12 步流程教学
原文: https://bysocket.com/midjourney-register/ 先推荐一个 PromptHero 中文官网 https://promptheroes.cn/ :Prompt ...
- LiteAI 四大杀手锏,解锁物联网智能设备AI开发难关
[摘要] IoT设备中嵌入AI能力实现产品的智能升级,已经是AIoT行业发展的重要通道,那怎样才能实现AIoT = AI + IoT呢?如何将AI模型塞到小小的IoT设备里,让它可以轻松运行起来呢?成 ...
- 3大方面升级华为云CCE集群体验,助力集群高效运维管理
本文分享自华为云社区<华为云从心打造CCE集群升级体验,助力集群高效运维管理>,作者:云容器大未来 . 在云原生时代浪潮的推动下,Kubernetes的发展日新月异,更新的集群版本可以带来 ...
- 基于DMS的数仓智能运维服务,知多少?
摘要:GaussDB(DWS)使用DMS来承载数据库的智能运维体系,提供了数据库运维过程中的监控,分析,处理三大核心处理过程. 本文分享自华为云社区<GaussDB(DWS) 数据库智能监控运维 ...
- IOS上架流程详解,包含审核避坑指南!
准备 开发者账号 完工的项目 上架步骤 一.创建App ID 二.创建证书请求文件 (CSR文件) 三.创建发布证书 (CER) 四.创建Provisioning Profiles配置文件 (PP ...
- 字节跳动基于ClickHouse优化实践之“资源隔离”
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 相信大家都对大名鼎鼎的 ClickHouse 有一定的了解了,它强大的数据分析性能让人印象深刻.但在字节大量生产使 ...
- Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
1.Nuget包添加引用: X.PagedList.Mvc.Core 2.View: @using VipSoft.Web.Model @model X.PagedList.IPagedList< ...