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

【云原生篇】k8s之Deployment详解

Kubernetes 的 Deployment 是一种管理声明式更新的资源对象,它允许你描述应用的期望状态,并由 Deployment 控制器自动将当前状态改变为期望状态。Deployment 主要用于无状态应用的部署和扩展,但也可以用于有状态应用。

核心功能

  • 自动化部署与回滚:Deployment 可以自动更新应用的实例(Pods),并在更新过程中保持应用的可用性。如果更新失败,Deployment 也能自动回滚到之前的版本。
  • 声明式更新:你只需要声明应用的目标状态,Deployment 控制器就会负责改变实际状态以匹配目标状态。
  • 扩展和收缩:可以通过修改 Deployment 中的副本数(replicas)来扩大或缩小应用的规模。
  • 自我修复:如果某个 Pod 失败,Deployment 会替换它,确保定义的副本数量不变。

工作原理

  1. 定义 Deployment:通过 YAML 或 JSON 文件定义 Deployment,包括应用的容器镜像、副本数、更新策略等信息。
  2. 创建 Deployment:使用 kubectl apply -f deployment.yaml 命令创建 Deployment。Kubernetes API 服务器接收到创建请求后,记录期望的应用状态。
  3. Deployment 控制器响应:Deployment 控制器观察到期望状态的变化,开始采取行动将当前状态改变为期望状态。这包括启动或停止 Pod 来匹配副本数,或更新 Pod 以匹配新的应用定义。
  4. 创建 ReplicaSet:Deployment 为每次更新创建一个新的 ReplicaSet,并通过它来管理所有的 Pod。如果更新失败,Deployment 可以回滚到之前的 ReplicaSet。
  5. 健康检查和监控:Deployment 依赖 Kubernetes 的健康检查机制来监控 Pod 的健康状态。如果 Pod 不健康,它会被替换。

更新策略

Deployment 支持两种更新策略:

  • RollingUpdate(默认策略):渐进式更新应用的 Pod,新 Pod 会逐渐替换旧的 Pod,确保应用的高可用性。在任何时刻,都有一部分旧的 Pod 和新的 Pod 同时服务。
  • Recreate:先删除所有旧的 Pod,然后创建新的 Pod。这种策略适用于无法同时运行多个版本的应用,但在更新期间应用会暂时不可用。

使用场景

  • 应用部署:快速部署和更新无状态应用。
  • 持续部署/持续交付 (CI/CD):结合 CI/CD 系统自动化应用的构建、测试和部署。
  • 蓝绿部署和金丝雀发布:通过控制流量分配来实现蓝绿部署和金丝雀发布,以减少部署风险。

示例

以下是一个简单的 Deployment 定义示例:

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80

这个 Deployment 创建了 3 个副本的 Nginx 服务器,每个副本都是通过一个 Pod 运行的。当这个 Deployment 被应用到集群中时,Deployment 控制器会确保任何时候都有 3 个运行着 Nginx 1.14.2 版本的 Pod。

通过理解和使用 Deployment,你可以轻松地管理 Kubernetes 集群中的应用部署和更新,确保应用的稳定运行和快速迭代。

相关文章:

【云原生篇】k8s之Deployment详解

Kubernetes 的 Deployment 是一种管理声明式更新的资源对象,它允许你描述应用的期望状态,并由 Deployment 控制器自动将当前状态改变为期望状态。Deployment 主要用于无状态应用的部署和扩展,但也可以用于有状态应用。 核心功能 自动化部署…...

linux安装dubboAdmin

1.环境准备: jdk-8u391-linux-x64apache-maven-3.9.6apache-tomcat-8.5.100 2.安装注册中心zookeeper zookeeper的安装看我的另一篇文章,安装完成后保持启动状态 linux安装Zookeeper的详细步骤-CSDN博客 3.安装dubboadmin 源码下载地址:R…...

Android 系统编译 and 应用裁剪

平台应用编译 平台应用demo的Android.mk写法: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional# Only compile source java files in this apk. LOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_PACKAGE_NAME := TestLOCAL_CER…...

java数组.day16(冒泡排序,稀疏数组)

冒泡排序 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时…...

vue+springboot多角色登录

①前端编写 将Homeview修改为manager Manager&#xff1a; <template><div><el-container><!-- 侧边栏 --><el-aside :width"asideWidth" style"min-height: 100vh; background-color: #001529"><div style"h…...

使用 ADB 查找应用名称和活动名称,并启动指定页面

知识点和难题&#xff1a; 查找应用名称和活动名称&#xff1a; 使用 ADB 命令 adb shell dumpsys window | findstr mCurrentFocus 可以查找当前设备上活动的应用名称和活动名称。 保存输出结果&#xff1a; 将命令的输出结果保存到文件中&#xff0c;方便后续使用。 启动指…...

LangChain - 文档转换

文章目录 一、文档转换器 & 文本拆分器文本拆分器 二、开始使用文本拆分器三、按字符进行拆分四、代码分割 (Split code)1、PythonTextSplitter2、JS3、Markdown4、Latex5、HTML6、Solidity 五、MarkdownHeaderTextSplitter1、动机2、Use case 六、递归按字符分割七、按tok…...

【C++】STL--list

目录 list的介绍 list的使用 list的构造 list iterator的使用 list capacity list modifiers list的迭代器失效 list模拟实现 list的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向…...

二. CUDA编程入门-双线性插值计算

目录 前言0. 简述1. 执行一下我们的第十个CUDA程序2. Bilinear interpolation3. 代码分析总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 Note&#xff1a;关于 CUDA 加速双线程插值的内容博主…...

实时计算平台设计方案:913-基于100G光口的DSP+FPGA实时计算平台

基于100G光口的DSPFPGA实时计算平台 一、产品概述 基于以太网接口的实时数据智能计算一直应用于互联网、网络安全、大数据交换的场景。以DSPFPGA的方案&#xff0c;体现了基于硬件计算的独特性能&#xff0c;区别于X86GPU的计算方案&#xff0c;保留了高带宽特性&…...

Glide系列-自定义ModuleLoader

在当今快速发展的移动应用领域&#xff0c;图片的高效加载和显示对于提供流畅用户体验至关重要。Glide作为一款强大的图片加载库&#xff0c;已经成为Android开发者的首选工具之一。但是&#xff0c;你有没有遇到过Glide默认不支持的模型类型&#xff0c;或者需要对图片加载过程…...

设计模式——责任链模式13

责任链模式 每个流程或事物处理 像一个链表结构处理。场景由 多层部门审批&#xff0c;问题分级处理等。下面体现的是 不同难度的问题由不同人进行解决。 设计模式&#xff0c;一定要敲代码理解 传递问题实体 /*** author ggbond* date 2024年04月10日 07:48*/ public class…...

Linux云计算之Linux基础3——Linux系统基础part-2

1、终端、shell、文件理论 1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件…...

HBase详解(2)

HBase 结构 HRegion 概述 在HBase中&#xff0c;会从行键方向上对表来进行切分&#xff0c;切分出来的每一个结构称之为是一个HRegion 切分之后&#xff0c;每一个HRegion会交给某一个HRegionServer来进行管理。HRegionServer是HBase的从节点&#xff0c;每一个HRegionServ…...

Web后端搭建

目录 一 搭建服务器端 1.1安装服务器软件 1.2检查环境是否配置 1.3安装Tomcat 二 创建并发Web项目 2.1创建一个java项目 三 创建Servlet 前端程序如何才能访问到后端程序呢&#xff0c;这时候我们就需要web服务器来解决&#xff1a;将后端程序部署到服务器中&#xff0c…...

k8s单节点部署,容器运行时使用containerd

环境 系统 &#xff1a; entOS Linux release 7.9.2009 (CoreIP&#xff1a;192.168.44.177 硬件要求&#xff1a;控制平面最少需要 2c2g 安装前环境准备 如果是集群部署还需要配置时间同步 关闭防火墙 systemctl disable firewalld关闭selinux setenforce 0sed -i s/SELI…...

深入浅出 -- 系统架构之性能优化的核心思维

“在当前的互联网开发模式下&#xff0c;系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至&#xff0c;性能优化成为了现时代开发过程中炙手可热的名词&#xff0c;无论是在开发、面试过程中&#xff0c;性能优化都是一个常谈常新的话题”。Java语言作为企业应用中的…...

Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066

很奇怪的问题,在使用nifi的时候碰到的,这里是用NIFI,把数据从postgresql中同步到mysql中, 首先postgresql中的源表,中是没有create_time这个字段的,但是同步的过程中报错了. 报错的内容是说,目标表中有个create_time字段,这个字段是必填的,但是传过来的flowfile文件中,的数据没…...

批量删除文件脚本

在工作中我们经常会遇到一些重复性的工作&#xff0c;如批量创建文件&#xff0c;删除文件等等。这种重复性的工作shell脚本往往能给我们带来极大的便利。 将需要删除的文件路径存放在【stt_Files_240410.rpt】随便一个 文档中即可。 下面是一个批量删除文件的一个脚本范例&…...

蓝桥杯物联网竞赛_STM32L071KBU6_我的全部省赛及历年模拟赛源码

我写的省赛及历年模拟赛代码 链接&#xff1a;https://pan.baidu.com/s/1A0N_VUl2YfrTX96g3E8TfQ?pwd9k6o 提取码&#xff1a;9k6o...

PN5180 ISO15693协议栈实现与嵌入式NFC开发指南

1. PN5180库深度解析&#xff1a;面向嵌入式工程师的NFC ISO15693协议栈实现指南NXP PN5180是业界领先的多协议NFC控制器&#xff0c;支持ISO/IEC 14443 A/B、ISO/IEC 15693、Felica及NFC Forum Type 1–5标签。其核心优势在于高集成度射频前端、可编程调制解调器及灵活的主机接…...

Scarab:让空洞骑士模组管理变得如此简单

Scarab&#xff1a;让空洞骑士模组管理变得如此简单 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经因为空洞骑士模组安装的复杂流程而头疼&#xff1f;是否在寻找依…...

UnityLockstep:构建零延迟多人游戏的终极同步框架

UnityLockstep&#xff1a;构建零延迟多人游戏的终极同步框架 【免费下载链接】UnityLockstep Deterministic Lockstep with clientside prediction and rollback 项目地址: https://gitcode.com/gh_mirrors/un/UnityLockstep 在多人游戏开发中&#xff0c;你是否曾为网…...

seo白帽优化会不会被搜索引擎识别和惩罚_网站使用seo白帽优化会有什么风险

SEO白帽优化会不会被搜索引擎识别和惩罚 在当今互联网时代&#xff0c;网站的流量和排名直接关系到企业的市场竞争力。作为提升网站排名的重要手段&#xff0c;SEO优化被广泛应用。其中&#xff0c;SEO白帽优化是最为推崇的一种方法。SEO白帽优化会不会被搜索引擎识别和惩罚呢…...

C++的std--ranges中的验证编译期

C20引入的std::ranges库彻底改变了范围操作的方式&#xff0c;其中编译期验证机制是其最强大的特性之一。这种机制允许开发者在编译阶段捕获潜在错误&#xff0c;显著提升了代码的健壮性和性能。本文将深入探讨std::ranges中编译期验证的核心机制及其实际应用价值。编译时概念检…...

Wan2.2-I2V-A14B部署教程:NVIDIA MPS多进程服务共享GPU资源方案

Wan2.2-I2V-A14B部署教程&#xff1a;NVIDIA MPS多进程服务共享GPU资源方案 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文本生成视频任务优化的私有部署镜像&#xff0c;特别针对RTX 4090D 24GB显存显卡进行了深度优化。这个镜像最大的特点是内置了完整的运行环境和模…...

Wan2.2-I2V-A14B多模态延伸:结合ASR语音识别生成带字幕视频方案

Wan2.2-I2V-A14B多模态延伸&#xff1a;结合ASR语音识别生成带字幕视频方案 1. 方案概述 在当今视频内容创作领域&#xff0c;为视频添加专业字幕一直是个耗时费力的工作。传统流程需要先录制视频&#xff0c;再通过人工听写或专业软件添加字幕&#xff0c;整个过程可能需要花…...

AI辅助快速模拟:在快马平台用C语言生成ahflt.sys驱动行为原型

今天想和大家分享一个有趣的实验&#xff1a;如何在InsCode(快马)平台上快速模拟Windows驱动行为。最近在研究ahflt.sys这个系统文件时&#xff0c;发现直接操作真实驱动既复杂又有风险&#xff0c;于是尝试用C语言写了个控制台程序来模拟它的基础行为。 项目背景与需求分析 ah…...

如何高效导出并打包SVN变更的Java文件

很多Java开发者在使用TortoiseSVN管理项目时&#xff0c;往往会面临一个难题:如何在不同版本之间快速导出修改过的Java文件&#xff0c;并将其打包成可部署的class文件&#xff1f;仅仅依靠TortoiseSVN导出差异文件&#xff0c;然后手动在IDE(如IntelliJ IDEA&#xff09;选择文…...

基于Ascend 950的Cube编程

直播回放链接&#xff1a;基于下一代硬件的Cube编程_哔哩哔哩_bilibili...