当前位置: 首页 > news >正文

Linux:kubernetes(k8s)Deployment的操作(12)

创建deployment

命令 

kubectl create deploy nginx-deploy --image=nginx:1.7.9

再去使用以下命令分别查询

ubectl get deploy
kubectl get replicaset
kubectl get pod

他是一个层层嵌套的一个关系

首先是创建了一个 deploy  里面包含着replicaset  replicaset里面含有一个pod


yaml文件 

我们刚刚通过命令去创建了一个peployment,我们可以直接通过,命令去获取他的yaml,直接利用上

kubectl get deploy nginx-deploy -o yaml

nginx-deploy是刚刚创建的deploy名称

会立马输出出来一段yaml配置文件这里的文件我们不全都要只取一部分

就是我截图的这一部分,下面还有,那些就不要了,再去创建一个yaml文件放进去,我这里的名字为nginx-deploy

下面这些是经过精简的yaml文件 

apiVersion: apps/v1 # deployment api版本
kind: Deployment    # 资源类型为deployment 
metadata:           # 元信息labels:           #标签app: nginx-deploy   # 具体的key:value配置形式name: nginx-deploy    # deployment的名字namespace: default    # 所在的命名空间
spec:replicas: 1   # 期望副本数revisionHistoryLimit: 10       # 进行回滚更新后,保留历史版本数selector:     # 选择器 , 用于找到匹配的rsmatchLabels:        # 按照标签匹配app: nginx-deploy # 匹配的标签key/valuestrategy:             # 更新策略rollingUpdate:      # 滚动更新的配置maxSurge: 25%     # 滚动更新时,更新的个数最多可以超过期望副本数的个数或者比例maxUnavailable: 25%       # 滚动更新时,最大不可用比例,表示在所有副本数中最多可以有多少个不更新成功type: RollingUpdate # 更新的类型 ,滚动更新template:     # pod模板metadata:   # pod的元信息labels:   # pod的标签app: nginx-deployspec:       # pod的期望信息containers:       # pod的容器- image: nginx:1.7.9      # 镜像imagePullPolicy: IfNotPresent   # 拉取策略name: nginx     # 容器名称restartPolicy: Always     # 重启策略terminationGracePeriodSeconds: 30  # 删除操作最多宽限时间
~                                                                   

这些就是创建的一个文件,下面留着用


滚动更新

修改了deployment文件中的template中的属性后,才触发了更新操作

现在可以看到我们当前部署的信息就这一个

由于我们刚刚创建的deploy是通过命令创建的所以我们在本地的文件里改是不会有任何效果的 

直接使用命令进入deploy 修改

我先在这添加了一个标签test:‘123’ 后再去查看deploy

发现并没有什么变化,但是标签确实是给我们加上了,因为他的ready一直是1并没有滚动创建副本的一个变化

在详细信息里也是确确实实没有显示

在滚动更新之前我先去修改一下他的副本数,这样可以更佳清楚的看到滚动更新的效果

可以看到他的副本数是1 我直接给他改成3 

让后再去get一下

可以看到他后面是变成3/3了但是他还是一个deploy

rs也同样是1个

 但是pod变成了3个,而且标签还都是用的一个

现在开始展示滚动更新 ,再去deploy里面进行一个配置

kubectl edit deploy nginx-deploy

把1.7.9改成1.9.1

 这时我们快速的去查看

可以到ready一直是3最后就成功的全部滚动更新完毕

其实在滚动更新的时候还可以使用命令去进行查看

现在我们开启两个ssh窗口,一个用于更新一个用于查看 

kubectl set image deployment/nginx-deploy nginx=nginx:1.7.9

 这个命令就相当于我们进去修改把镜像1.9.1又改回1.7.9一样

在更新时候使用命令

kubectl rollout status deploy nginx-deploy

就可以看到当前滚动情况

kubectl describe deploy nginx-deploy

 也是可以看到滚动更新的情况

可以看到他是开启一个关闭一个开启一个关闭一个

rs也是从原来的rs中更新到了另一个rs中        


 回滚

假如说当我们要去进行滚动更新的时候,把版本本来要写1.9.1但是误写成1.91这时候看看怎么办

kubectl set image deployment/nginx-deploy nginx=nginx:1.91

开始更新

kubectl rollout status deploy nginx-deploy

再去查看一下,让后就会一直卡住,因为版本号不对所以他一直卡住

发现下面rs一直是1 还可以看到pod也报错了

kubectl describe pod nginx-deploy

这里可以看到详细的一个信息了

我们可以通过

kubectl rollout history deployment/nginx-deploy

去查看一个系统版本更新的历史记录

因为在更新的时候没有加--record后面加描述

我们可以通过他前面的数进行回滚

kubectl rollout history deployment/nginx-deploy --revision=3

 

可以看那次的信息

 kubectl rollout undo deployment/nginx-deploy

这个是回滚到上一次 

kubectl rollout undo deployment/nginx-deploy --to-revision=2

回滚到指定的那次 

 现在回退完了再使用edit进行查看一下

可以看到又回到1.9.1了

可以通过设置 .spec.revisonHistoryLimit 来指定 deployment 保留多少 revison,如果设置为 0,则不允许 deployment 回退了 


未完待续 

相关文章:

  • 小米消金加大科技赋能,打造特色金融服务体系
  • 6.S081的Lab学习——Lab1: Xv6 and Unix utilities
  • 若依 启动!(手把手配置好Java若依,运行起来)
  • docker 部署prometheus+grafana
  • FPGA TestBench编写学习
  • 如果需要在Log4j中记录特定的异常信息,应该如何实现?如何动态地更改Log4j的日志级别?
  • C#游戏开发
  • torch 手动计算BatchNorm, 手动计算LayerNorm, 手动计算GroupNorm, 手动计算InstanceNorm
  • Arm MMU深度解读
  • Flink 性能优化总结(内存配置篇)
  • HTML5 CSS3常见新特性
  • 【QT+QGIS跨平台编译】之七十一:【QGIS_Analysis跨平台编译】—【qgsrastercalclexer.cpp生成】
  • xshell ubuntu 安装 tensorflow
  • 基于ElasticSearch存储海量AIS数据:AIS数据索引机制篇
  • K8s — PVC|PV Terminating State
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2018一半小结一波
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CentOS7简单部署NFS
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES学习笔记(12)--Symbol
  • Java反射-动态类加载和重新加载
  • Java应用性能调优
  • JS专题之继承
  • k8s如何管理Pod
  • Less 日常用法
  • MySQL的数据类型
  • node 版本过低
  • Python学习之路16-使用API
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 回顾2016
  • 数据科学 第 3 章 11 字符串处理
  • 译米田引理
  • 再谈express与koa的对比
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • #Lua:Lua调用C++生成的DLL库
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #在 README.md 中生成项目目录结构
  • $.ajax()
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (11)MSP430F5529 定时器B
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十六)一篇文章学会Java的常用API
  • (转)为C# Windows服务添加安装程序
  • .NET : 在VS2008中计算代码度量值
  • .NET Core Web APi类库如何内嵌运行?
  • .NET MVC第三章、三种传值方式
  • .Net Redis的秒杀Dome和异步执行
  • .net Stream篇(六)