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

创建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 回退了 


扩容和缩容

假如我的服务器在某一时间段,突然需要大量访问,而过了这个时间访问量会急剧缩减

在访问量大的时候,我们可以去做一个副本个数的修改,我们每次都要去edit修改,副本的修改非常常用,总不可能每次都去修改,当我们真正需要去扩容缩容的时候我们应该更方便,越方便越好,所以我们就用这个扩容和缩容去快速实现

通过 kube scale 命令可以进行自动扩容/缩容,以及通过 kube edit 编辑 replcas 也可以实现扩容/缩容

 扩容与缩容只是直接创建副本数,没有更新 pod template 因此不会创建新的 rs

可以看到当前我们是这样的 

kubectl scale --replicas=6 deploy nginx-deploy

 我直接给他扩容到6个

可以发现pod是6了但是rs还是没有变化

缩容也是一样的,直接把6改成3就立马缩回来了

kubectl scale --replicas=3 deploy nginx-deploy

直接就搞定了


暂停与恢复

由于每次对 pod template 中的信息发生修改后,都会触发更新 deployment 操作,那么此时如果频繁修改信息,就会产生多次更新,而实际上只需要执行最后一次更新即可,当出现此类情况时我们就可以暂停 deployment 的 rollout

 我现在直接对我的模板去edit编辑一下

kubectl edit deploy nginx-deploy

在里面添加了这么一段然后直接保存退出

他接着就会自动进行更新了,这个是没有暂停的情况,现在直接将他暂停更新

kubectl rollout pause deploy nginx-deploy

直接就暂停了,接下来我再去进行修改

我新加了一个limits

再保存退出

可以发现他并没有去更新,再去看一下他的历史更新记录

可以看到他最后一次更新是更新requests的内容,哪怕是把他的镜像版本再改回1.7.9他也是不会更新的

kubectl rollout resume deploy nginx-deploy

恢复他的更新

可以看到他又立马开始更新了

去查看更新也同样可以看到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF —— Grid网格布局

1 :Grid网格布局简介 Grid为WPF中最常用的布局容器, 作为View中的主要组成部分, 负责框架中整体的页面布局。 2:网格标签Grid.ColumnDef Grid.ColumnDefinitions自定义列 只能设置宽度 不能设置高度ColumnDefinition 每一个列可以设置宽度,…

有来团队后台项目-解析6

element-icon 引入 安装 在解析3中,已经安装过 创建plugins 文件夹 icons 文件 import type { App } from "vue"; import * as ElementPlusIconsVue from "element-plus/icons-vue";// 注册所有图标 export function setupElIcons(app: App…

使用docker搭建ELK进行日志收集

目录 docker安装es docker安装kibana 为es配置中文分词器 安装原生logstash 项目服务集成日志收集 为es设置登录密码 为kibana设置登录密码 为es容器设置内存限制 使用htop或者是docker进行内存使用查询 docker安装es 与自己的springBoot版本适配即可,下面…

鸿蒙开发实战:【电话服务子系统】

简介 电话服务子系统,提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息。应用可以通过调用API来获取当前注册网络名称、网络服务状态、信号强度以及SIM卡的相关信息。 各个模块主要作用如下: 核心服务模块:主要功能是初始化RI…

Docker进阶:深入了解 Dockerfile

Docker进阶:深入了解 Dockerfile 一、Dockerfile 概述二、Dockerfile 优点三、Dockerfile 编写规则四、Dockerfile 中常用的指令1、FROM2、LABEL3、RUN4、CMD5、ENTRYPOINT6、COPY7、ADD8、WORKDIR9、 ENV10、EXPOSE11、VOLUME12、USER13、注释14、ONBUILD 命令15、…

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘,建议容量至少为8GB,以便存放系统镜像文件 一台已经安装好操作系统的计算机,用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…

【学一点RISC-V】RISC-V IMSIC

IMSIC RISC-V AIA 文档 第三章 Incoming MSI Controller (IMSIC) 传入 MSI 控制器(IMSIC)是一个可选的 RISC-V 硬件组件,与 hart 紧密相连,每个 hart 有一个 IMSIC。IMSIC 接收并记录 Hart 的传入消息信号中断 (MSI),并…

【框架学习 | 第五篇】SpringMVC(常用注解、获取请求参数、域对象共享数据、拦截器、异常处理、上传/下载文件)

文章目录 1.SpringMVC简介1.1定义1.2主要组件1.3工作流程1.3.1简要流程1.3.2详细流程 1.4优缺点 2.常用注解3.获取请求参数3.1通过 HttpServletRequest 获取请求参数3.2通过控制器方法的形参获取请求参数3.2.1请求路径参数与方法形参一致3.2.2请求路径参数与方法形参不一致3.2.…

【附学习笔记】现在学网络安全主要是实战还是打CTF?

作为一个5年资深网络安全工程师前来分享我的看法。 在我看来,无论是实战还是打CTF(Capture The Flag,夺旗赛),都是学习网络安全的重要方面,只是侧重点可能有所不同。 网络安全是一个复杂且不断发展的领域…

springboot学习(八十六) springboot使用graalvm编译native程序

一、windows环境下 1.下载graalvm的jdk https://injdk.cn/ 下载windows版本 配置java环境变量,配置过程略 2.下载visual Studio Build Tools 下载地址:https://aka.ms/vs/17/release/vs_BuildTools.exe 安装后选择组件: 其中windows S…

《ElementPlus 与 ElementUI 差异集合》el-form-item CSS 属性 display 有变化

差异 element-ui el-form 中,属性display: flex; 导致元素在一排;element-plus el-form 中,属性display: block; 元素按照自己的属性排列; /* element ui */ display: block;/*element plus */ display: flex;如图所示 解决方案…

深度解析:cache的基本概念原理扫盲

引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存…

【BUG 弹药库】Tortoise git 绿色的勾 ✔ 和 红色的 !突然不见了该如何解决呢?

文章目录 1. 出现的问题描述如下所示:2. 如何解决这个问题呢 ? 1. 出现的问题描述如下所示: 用 TortoiseGit 提交代码的时候,红色的 ! 和 绿色的 ✔ 突然消失了; 2. 如何解决这个问题呢 ? ① 首先按住快…

商业模式的深度解析:以四个特点构筑成功之路

商业模式,是企业将产品、服务、信息流、资金流等要素组合在一起,形成独特价值主张,并通过特定的渠道和方式传递给目标市场,从而获取利润的一种系统性设计。一个成功的商业模式,往往具备四个显著特点:重点突…

企业微信如何接入第三方应用?

1.登录企业微信管理后台:https://work.weixin.qq.com/wework_admin​​​​​ 2.点击创建应用; ​​​​​​​ 3. 此时可以看到已经创建好的应用,并且生成应用的唯一id(agentId) 4. 第三方应用申请域名 (举例&…

智慧楼宇物联网建设实施方案(2)

建设方案 楼宇综合管理平台 智慧楼宇物联网应用综合管理系统是对整个物联网系统的集中监控和展示。其主要功能是对各应用子系统的关键监测数据进行数据格式解析并呈现。进而使管理者能够从整体上对整个物联网系统运行状态有个直观的了解。其不同于各专业子系统的管理软件,重…

flstudio教程如何设置成中文 flstudio基础教程 flstudio免费

Fl studio编曲软件总共有英文和中文两种语言供用户选择,对于我们来说,更习惯于使用中文版本的flstudio编曲软件,包括我自己也比较习惯于使用中文版本的flstudio,同时也能提高工作效率。Flstudio编曲软件默认语言是英文&#xff0c…

vue:功能【xlsx】动态行内合并

场景:纯前端导出excel数据,涉及到列合并、行合并。 注)当前数据表头固定,行内数据不固定。以第一列WM为判断条件,相同名字的那几行数据合并单元格。合并的那几行数据,后面的列按需求进行合并。 注&#x…

CV论文--2024.3.13

1、Sora Generates Videos with Stunning Geometrical Consistency 中文标题:Sora 生成具有惊人几何一致性的视频。 简介:最近发布的 Sora 模型展示了在视频生成领域的出色表现,引发了人们对其模拟真实世界现象能力的激烈讨论。尽管该模型越来越受欢迎&…

如何保证Redis和数据库数据一致性

缓存可以提升性能,减轻数据库压力,在获取这部分好处的同时,它却带来了一些新的问题,缓存和数据库之间的数据一致性问题。 想必大家在工作中只要用了咱们缓存势必就会遇到过此类问题 首先我们来看看一致性: 强一致性…