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

K8s:无状态

无状态服务

无状态服务是指服务的实例之间没有持久化状态,每个实例都是相同的,可以互换使用。

调度器

ReplicationController

简称 RC是 Kubernetes 早期版本中用来确保 Pod 副本始终运行的 API 对象。它通过监控 Pod 副本的数量,确保任何时候都有指定数量的 Pod 副本始终运行。即如果有容器异常退出,会自动创建新的 Pod 来替代;而异常多出来的容器也会自动回收。

确保健康 Pod 的数量、弹性伸缩、滚动升级以及应用多版本发布跟踪等。

特点

  • 确保 Pod 副本始终运行。
  • 可以进行滚动更新。
  • 在较新版本的 Kubernetes 中,ReplicaSet 已经取代了 ReplicationController

示例

apiVersion: v1
kind: ReplicationController
metadata:name: my-replicationcontroller
spec:replicas: 3selector:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: myapp:1.0.0

ReplicaSet

RS,ReplicaSet 保证 Pod 的副本数不变,并且能够处理 Pod 模板的更新。

特点

  • ReplicationController 类似,但更通用。
  • 支持基于集合的选择器(如 key in (value1, value2))。
  • 推荐用于替代 ReplicationController

示例

apiVersion: apps/v1
kind: ReplicaSet
metadata:name: my-replicaset
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: myapp:1.0.0

Deployment

Deployment 是一种更高级的 API 对象,用于声明 Pod 和 ReplicaSet 的声明周期管理。Deployment 控制器负责 Pod 副本的声明式更新,可以自动替换 Pod 模板中的镜像或其他定义。

API版本:apps/v1

特点

  • 提供应用的声明式更新能力。
  • 支持回滚和暂停更新。
  • 可以查看 Deployment 的状态,如更新进度、修订版本等。
  • 是管理无状态应用的标准方式。

示例

apiVersion: apps/v1
kind: Deployment
metadata:name: my-deployment
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myapp-containerimage: myapp:1.0.0

比较

  • 功能Deployment 提供了比 ReplicaSetReplicationController 更丰富的功能,如自动滚动更新、回滚等。
  • 选择器ReplicaSet 支持集合选择器,而 ReplicationController 只支持等值选择器。
  • 推荐使用:在新的 Kubernetes 应用中,推荐使用 Deployment 来管理无状态应用的声明周期,使用 StatefulSet 来管理有状态应用。
$ kubectl apply -f exampleDeploymentv1.yml --record

参数–record,这样会把每次修改Deployment控制器时所使用的命令记录到备注字段中,以便在查看Deployment控制器变更历史或进行回滚时可以辨别每次修改的内容。

deployment的yaml模板

apiVersion: apps/v1
kind: Deployment
metadata:name: String            #元数据,必填,Deployment控制器的名字namespace: String       #元数据,Deployment控制器的命名空间labels:                 #元数据,标签列表key: value            #元数据,可定义多个标签的键/值对annotations:            #元数据,自定义注解列表key: value            #元数据,可定义多个注解的键/值对
spec:selector:#必填,用于指定此Deployment控制器针对的Pod的标签选择器,需要与template中的标签匹配matchLabels:          #定义需要匹配的标签集合key: value          #需要匹配的标签,可定义多个标签的键/值对template: [PodTemplate] #必填,Pod模板,它与Pod具有完全相同的结构,不过它是嵌套的,#而且不需要带apiVersion或kind字段replicas: int           #指定所需Pod的数量,默认为1strategy:               #更新时替换旧Pod的策略type: Recreate/RollingUpdate     #Recreate表示所有现有的Pod都会在创建新的Pod之前被#终止,RollingUpdate表示以滚动更新方式更新PodrollingUpdate:maxSurge: int/int%           #在滚动更新时,在所需数量的Pod上允许创建的最大Pod数,#这个数字也可以为百分比形式maxUnavailable: int/int%     #在滚动更新时,同时存在最大不可用Pod数,#这个数字也可以为百分比形式progressDeadlineSeconds: int  #Deployment控制器处于进行状态时的等待秒数,超过这个时间将会变为失败minReadySeconds: int     #指定新创建的Pod应该在没有任何容器崩溃的情况下准备好的最短秒数revisionHistoryLimit: int        #指定要保留的允许回滚的旧ReplicaSet的数量paused: boolean                  #默认为false,用于暂停和恢复部署。当暂停部署时,#Pod模板中spec属性的任何更改都不会触发新的部署

Deployment控制器有两种更新方式。

  • Recreate:所有现有的Pod都会在创建的Pod之前被终止;删除旧的ReplicaSet控制器下的所有Pod,只保留旧的ReplicaSet控制器的定义,但不再投入使用

  • RollingUpdate:表示以滚动跟新方式更新Pod,并可以通过maxUnavailable和maxSurge参数控制滚动更新过程

    • maxUnavailable:表示在更新过程中能够进入不可用状态的Pod的最大值或相对于总副本数的最大百分比
    • maxSurge:表示能够额外创建的Pod数或相对于总副本数的百分比。

更新的暂停与恢复

暂停与恢复的命令如下所示。

$ kubectl rollout pause deploy {Deployment名称}
$ kubectl rollout resume deploy {Deployment名称}

回滚

需要回滚到之前版本,则可以先使用以下命令查看历史变更记录。

$ kubectl rollout history deployment {Deployment名称}

回滚命令

kubectl rollout undo deployment {Deployment名称} --to-revision={revision编号}

相关文章:

K8s:无状态

无状态服务 无状态服务是指服务的实例之间没有持久化状态,每个实例都是相同的,可以互换使用。 调度器 ReplicationController 简称 RC是 Kubernetes 早期版本中用来确保 Pod 副本始终运行的 API 对象。它通过监控 Pod 副本的数量,确保任何…...

Docker 入门篇(九)-- 使用 Maven 插件 构建 Docker 镜像

在这篇教程中,我们将学习如何使用 Maven 插件为 Spring Boot 应用构建 Docker 镜像。我们将使用 spring-boot-maven-plugin 和 dockerfile-maven-plugin 这两个插件。 一、前提条件 已安装 Docker。已安装 JDK 8 或以上版本。已安装 Maven。 二 创建一个 Spring …...

网络协议三

数据中心 一、DNS 现在网站的数目非常多,常用的网站就有二三十个,如果全部用 IP 地址进行访问,恐怕很难记住 根 DNS 服务器 :返回顶级域 DNS 服务器的 IP 地址 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 …...

LeetCode LRU缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,…...

Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?

带来了重新设计的共享 Mac 文件夹版本,这些文件夹现在是符号链接,像指针一样指向您的 Mac 文件夹中的文件,同时仍然显示在 Windows 的本地磁盘上。 修复了由于共享文件夹问题导致 NinjaTrader 无法正常启动的问题。 修复了由于共享文件夹问…...

Python 将CSV文件转为PDF文件

CSV文件通常用于存储大量的数据,而PDF文件则是一种通用的文档格式,便于与他人共享和打印。将CSV文件转换成PDF文件可以帮助我们更好地管理和展示数据。本文将介绍如何通过Python编程将CSV文件导出为PDF文件。 Python Excel库安装及介绍 在 Python 中&am…...

4_XMR交易过程

XMR交易过程 参考文档 书: 《精通门罗币 : 私密交易的未来》(Mastering Monero) 书中的代码示例: 《精通门罗币 : 私密交易的未来》深入探究门罗币与密码学门罗币的环签名分析官方介绍视频 1.隐匿地址 Stealth Address_Monero官方介绍视频2.环签名 Ring Signature_Monero官方…...

02_共享锁和排他锁

共享锁和排他锁 文章目录 共享锁和排他锁简介共享锁(Shared Lock, S Lock)简介原理使用方式加锁流程使用场景 排他锁(Exclusive Lock, X Lock)简介原理使用方式加锁流程使用场景 对比注意事项结论 简介 MySQL 中的共享锁和排他锁…...

Ubuntu的启动过程

尽管通常情况下Ubuntu的启动并不需要用户过多地参与,但是Ubuntu系统的启动本身是一个非常复杂的过程。在这个过程中,有硬件的检测、系统内核的准备以及各种系统服务的启动等。作为系统管理员,需要深入了解其中所经历的阶段,才能在…...

c# 下 ScintillaNET 显示XML信息并折叠节点

winform下显示XML信息(非WPF) 之前使用的是FastColoredTextBox,github地址如下: https://github.com/PavelTorgashov/FastColoredTextBox 但是有个问题,它支持中文,wordwraptrue,自动换行时&…...

什么叫防御式编程

防御式编程是一种编程策略,主要目的是提高代码的健壮性和可靠性。它假设任何错误都可能发生,并且在设计和编写代码时采取预防措施以防止这些错误导致程序崩溃或产生错误结果。 以下是一些防御式编程的常见实践: 输入验证:总是验证…...

前端优化之图片压缩——tinyPNG

今天前端前辈新介绍的一个压缩图片的工具——tinyPNG,地址:TinyPNG – Compress WebP, PNG and JPEG images intelligently可以将图片压缩,进行优化。 一、使用方法——手动压缩 将超过200kb的图片拖到我标注的红框框里,拖到这里…...

Springboot集成Quartz

Quartz简介 Job 表示一个工作,要执行的具体业务内容。 JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。 Trigger 代表一个调度参数的配置&#xf…...

Android面试题之Kotlin Jetpack组件LifecycleScope

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Kotlin中,LifecycleScope是Android Jetpack架构组件的一部分,主要用于简化与生命周期相关的协程管理。 它属于android…...

MySQL深分页优化

MySQL中的深分页问题通常是指当我们通过LIMIT语句查询数据,尤其是在翻到较后面的页码时,性能会急剧下降。例如,查询第1000页的数据,每页10条,系统需要跳过前9990条数据,然后才能获取到所需的记录&#xff0…...

问题:律师会见委托人的方式包括团体会见和( )。 #职场发展#笔记#学习方法

问题:律师会见委托人的方式包括团体会见和( )。 参考答案如图所示...

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

pytorch中的维度变换操作性质大总结:view, reshape, transpose, permute

在深度学习中,张量的维度变换是很重要的操作。在pytorch中,有四个用于维度变换的函数,view, reshape, transpose, permute。其中view, reshape都用于改变张量的形状,transpose, permute都用于重新排列张量的维度,但它们…...

LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划

LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划 文章目录 LeetCode刷题 | Day 4 分割等和子集(Partition Equal Subset Sum)自底向上动态规划前言一、题目概述二、解题方法2.1 一维表格的自底向上动态规划2.1.1 思路讲解2.1.2 伪代码 + 逐…...

基于工业互联网打造敏捷供应链的实现方式:创新路径与实践应用

引言 工业互联网和敏捷供应链是当今制造业发展中的两个重要概念。工业互联网以数字化、网络化和智能化为核心,致力于将传统工业生产与互联网技术相融合,从而实现生产过程的高效、智能和灵活。而敏捷供应链则强调快速响应市场需求、灵活调整生产和供应计划…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...