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

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

恢复他的更新

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

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

相关文章:

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

创建deployment 命令 kubectl create deploy nginx-deploy --imagenginx:1.7.9 再去使用以下命令分别查询 ubectl get deploy kubectl get replicaset kubectl get pod 他是一个层层嵌套的一个关系 首先是创建了一个 deploy 里面包含着replicaset replicaset里面含有…...

20240619-James-快速鸟瞰并发编程, 呕心沥血整理的架构技术(第3篇)

接着第1, 2篇后,我们继续来跟进一下并发编程的其它内容,如下: 第9节 java.util.concurrent包 线程池 线程池的核心接口是ExecutorService。java.util.concurrent还提供了一个静态工厂类Executors,其中包含用于创建配置线程池的…...

C语言——详解字符函数和字符串函数(一)

Hi,铁子们好呀!今天博主来给大家更一篇C语言的字符函数和字符串函数~ 具体讲的内容如下: 文章目录 🎆1.字符分类函数💯💯⏩1.1 什么是字符分类函数的?💯💯⏩1.2 字符函数的类型有哪…...

三款内衣洗衣机的顶级较量:希亦、小吉、由利,谁才是性价比之王?

洗衣机在我们的生活中可谓是非常常见的了,几乎每家每户都具备着一台。即便是有洗衣机,也有不少人不会将自己我贴身衣物直接扔在洗衣机里清洗,而是会自己手工手洗。这跟我们传统上的观念有很大的关系,认为把内衣、内裤等贴身衣物放…...

Java枚举多值映射应用

在日常系统交互中,经常遇到两个系统间定义的枚举不一致,在接口调用时需要转换,记录实现,方便备查。 场景 双方的支付方式定义不同,一侧为数字,一侧为英文,若使用 if 判断,则显得繁琐…...

css--浮动

一. 浮动的简介 在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。 二. 元素浮动后的特点 🤢脱离文档流。😊不管浮动前是什么元素,浮动后:默认宽与高都是被内容撑开&#xff0…...

基于有限状态机开发健壮的Nodejs/TCP客户端

有限状态机是一种数学计算模型,它描述了在任何给定时间只能处于一种状态的系统的行为。形式上,有限状态机有五个部分: 初始状态值 (initial state)有限的一组状态 (states)有限的一组事件 (events)由事件驱动的一组状态转移关系 (transition…...

javaEE13(网站第8章两个课后题)

1、对“jspservletjavabean实现分页查询”功能做如下补充: (1)记录批量删除:每个记录前添加复选框,点击批量删除,删除选中记录。 增加跳转到任意页功能。用户可改变每页记录条数。 页面&am…...

【Leetcode每日一题】 递归 - 反转链表(难度⭐)(35)

1. 题目解析 题目链接:206. 反转链表 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、递归函数的核心任务 递归函数的主要职责是接受一个链表的头指针,并返回该链表逆序后的新头结点。递归…...

Unity基础学习

目录 基础知识点3D数学——基础Mathf三角函数坐标系 3D数学——向量向量模长和单位向量向量的加减乘除向量点乘向量叉乘向量插值运算 3D数学——四元数为何使用四元数四元数是什么四元数常用方法四元数计算 MonoBehavior中的重要内容延迟函数协同程序协同程序原理 Resources资源…...

Java并发编程学习笔记:AQS

Java并发编程学习笔记:AQS 一、底层原理核心功能同步状态管理CLH 队列和线程调度机制独占模式与共享模式模板方法设计模式自旋、阻塞与超时机制 运行流程 二、锁的公平性公平锁非公平锁 三、容器实现 JUC中的AQS(AbstractQueuedSynchronizer)…...

Github上哪些好用的工具

专注于web漏洞挖掘、内网渗透、免杀和代码审计,感谢各位师傅的关注!网安之路漫长,与君共勉! Qexo-爱写博客的师傅强烈推荐 漂亮的 Hexo 静态博客编辑器。该项目是基于 Django 的 Hexo 静态博客管理后台,支持文章管理、…...

如何确保面试流程标准化操作,避免人为因素影响**

一、背景 在招聘过程中,面试作为关键环节,其标准化操作至关重要。标准化不仅有助于提高面试效率和质量,还能减少人为因素的影响,确保公平、公正和客观。本文将从以下八个方面探讨如何确保面试流程的标准化操作。 二、明确面试标准 制定明确的面试标准和要求,确保所有面试…...

YOLOv7改进 | 更换主干网络之PP-LCNet

前言:Hello大家好,我是小哥谈。PP-LCNet是一个由百度团队针对Intel-CPU端加速而设计的轻量高性能网络。它是一种基于MKLDNN加速策略的轻量级卷积神经网络,适用于多任务,并具有提高模型准确率的方法。与之前预测速度相近的模型相比,PP-LCNet具有更高的准确性。此外,对于计…...

MySQL基础-----多表查询之子查询

目录 前言 子查询概述 1.概念 2.分类 一、标量子查询 二、列子查询 三、行子查询 四、表子查询 前言 上一期我们讲了内外连接查询以及自连接查询,那么本期我们就学习多表查询的子查询。本期会详细讲解什么是子查询,以及子查询的相关功能&#xf…...

nginx应用场景(附配置)

场景1:web服务器 server {listen 80;server_name example.com; # 替换为您的域名location / {root /data/wwwroot;index index.html index.htm;} }server {listen 443 ssl;server_name example.com; # 替换为您的域名ssl_certificate /path/to/certificate.crt;ssl…...

tvm android_rpc_test.py执行报错解决

执行 python3 tests/android_rpc_test.py 报错&#xff1a; Run CPU test ... Traceback (most recent call last): File "tests/android_rpc_test.py", line 129, in <module> test_rpc_module() File "tests/android_rpc_test.py", line …...

十、项目沟通管理

十、项目沟通管理 从马斯洛需求的各个层级上&#xff0c;都需要沟通的介入。如果缺乏沟通&#xff0c;甚至可能严重损伤身心健康。 沟通渠道 1、 规划沟通管理 ​ 规划沟通管理是基于每个相关方或相关方群体的信息需求、可用的组织资产&#xff0c;以及具体项目的需求&#x…...

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…...

前端提高性能——使用Intersection Observer API对图片视频进行懒加载

前言 最近做了一个项目是类似于商城的&#xff0c;需要放很多图片&#xff0c;在用户选择一页五十条时&#xff0c;页面加载速度会比较慢。为了提高性能&#xff0c;选择用Intersection Observer API 实现图片懒加载。 实现步骤 一、html代码&#xff1a; <img class&qu…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...