Deployment 控制器

一、概述
·Deployment是ReplicaSet的高级别抽象,ReplicaSet控制器有的功能Deployment全部具备,ReplicaSet没有的Deployment也具备比如,它提供了滚动升级和回滚的功能。Deployment是控制多个ReplicaSet,从而可以实现无缝升级和回滚。

二、特点

  • 选择器:ReplicaSet使用标签选择器来选择要管理的Pod副本。
  • 伸缩性:Deployment高级控制器可以根据负载自动伸缩容器数量,以满足应用程序的需求。
  • 自我修复:Deployment高级控制器可以监控容器的健康状况,并在容器出现故障时自动重启或替换容器。
  • 负载均衡:Deployment高级控制器可以通过负载均衡算法,将请求分发到不同的容器实例上,以提高应用程序的性能和可用性。
  • 版本控制:Deployment可以指定多个ReplicaSet,每个ReplicaSet可以控制不同版本的Pod,从而实现灰度发布和回滚。
  • 声明式:指直接修改资源清单yaml文件,然后通过 apply ,就可以更改资源。

三、工作原理
·Deployment控制器建立在ReplicaSet控制器之上,管理多个ReplicaSet,每次更新镜像版本,都会生成一个新的ReplicaSet,把旧的ReplicaSet替换掉,多个ReplicaSet同时存在,但只运行一个ReplicaSet。

如果ReplicaSet V2版本更新上去存在问题,还可以回滚,Deployment建立在ReplicaSet之上,多个ReplicaSet组成一个Deployment,但只有一个ReplicaSet处于活跃状态。

四、Deployment YAML编写及参数解释

#使用explain命令查看定义 可以查看 deployment控制器字段说明:
kubectl explain deployment
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-deployment-1labels:env: uat
spec:replicas: 3minReadySeconds: 10  # 更新场景,等待时间,如果没有设置K8S会假设该容器启动起来后就提供服务了paused: # 暂停,当更新Pod时,先暂停,而不是立马更新progressDeadlineSeconds: 60 # 更新场景,等待时间超过此值,状态标记False,并说明原因,但是它并不会阻止 Deployment 继续进行卡住后面的操作strategy:rollingUpdate:        # 滚动更新,定义滚动更新方式,也就是pod能多几个,少几个maxSurge: 20%       # 允许更新中,最多超过Pod数值maxUnavailable: 20% # 允许更新中,最多允许几个不可用selector:matchLabels:app: demo-nginxtemplate:metadata:labels:app: demo-nginxspec:containers:- name: demo-nginximage: nginximagePullPolicy: IfNotPresentstartupProbe:      # 启动探测tcpSocket:port: 80livenessProbe:     # 存活探测httpGet:port: 80path: /index.htmlreadinessProbe:    # 就绪探测httpGet:port: 80path: "/index.html"

核心参数详解
ospec.minReadySeconds:更新场景,等待时间,如果没有设置K8S会假设该容器启动起来后就提供服务了。

ospec.paused: 暂停,当更新Pod时,先暂停,而不是立马更新,后面金丝雀发布要用到

ospec.progressDeadlineSeconds:更新场景,等待时间超过此值,状态标记False,并说明原因,但是它并不会阻止 Deployment 继续进行卡住后面的操作

ospec.strategy.rollingUpdate:滚动更新,定义滚动更新方式,也就是pod能多几个,少几个

ospec.strategy.rollingUpdate.maxSurge:指定在更新期间可以创建的新Pod的最大数量。例如,如果maxSurge设置为1,而Deployment中有3个Pod,则在更新期间可以创建4个Pod,其中3个是旧的Pod,1个是新的Pod。

ospec.strategy.rollingUpdate.maxUnavailable:指定在更新期间可以同时停止的旧Pod的最大数量。例如,如果maxUnavailable设置为1,而Deployment中有3个Pod,则在更新期间可以停止2个Pod,其中1个是旧的Pod,1个是新的Pod。

五、Deployment更新策略:
·Deployment目前支持两种更新策略

  • oRecreate:重建式更新,把Pod全部删除,在重新创建,风险很大,不建议使用

  • orollingUpdate:滚动式更新,批量替换更新,平滑升级,用户无感知

六、Deployment针对WEB站点滚动更新

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploymentlabels:env: uat
spec:replicas: 5minReadySeconds: 10 progressDeadlineSeconds: 60strategy:rollingUpdate:maxSurge: 30%         # 5*30%=1.5(~=2), 2+5=7,更新期间最多创建7个PodmaxUnavailable: 20%   # 5*20%=1, 1-5=4,更新期间最多停止4个Podselector:matchLabels:app: web-nginxtemplate:metadata:labels:app: web-nginxspec:containers:- name: web-nginximage: web:v2    # 版本更新imagePullPolicy: IfNotPresentstartupProbe:tcpSocket:port: 80livenessProbe:httpGet:port: 80path: /index.htmlreadinessProbe:httpGet:port: 80path: "/index.html"
#更新命令
kubectl apply -f web-deployment.yaml
#查看历史版本
kubectl rollout history deployment web-deployment
#回滚版本
kubectl rollout undo deployment web-deployment --to-revision=1

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

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

相关文章

element plus el-form双列布局及拓展任意布局

1 场景 一般表单我们直接默认布局&#xff0c;也就是单列布局&#xff0c;突然有个人员信息表单&#xff0c;需要双列布局的需求&#xff0c;简单实现并拓展下 2 思路 直接无脑divflex布局实现 3 代码 <template><el-form ref"formRef" :model"fo…

Blazor 错误笔记

1. 运行时问题 Microsoft.NETCore.App.Runtime.Mono.browser-wasm Microsoft.NETCore.App.Runtime.Mono.browser-wasm 是一个 .NET Core 运行时的包&#xff0c;用于在浏览器中运行 .NET Core 应用程序。它是针对 WebAssembly 架构的 .NET Core 运行时&#xff0c;可以在浏览…

Java中CompletableFuture 异步编排的基本使用

一、前言 在复杂业务场景中&#xff0c;有些数据需要远程调用&#xff0c;导致查询时间缓慢&#xff0c;影响以下代码逻辑运行&#xff0c;并且这些浪费时间的逻辑与以后的请求并没有关系&#xff0c;这样会大大增加服务的时间。 假如商品详情页的每个查询&#xff0c;需要如下…

C //练习 5-2 模仿函数getint的实现方法,编写一个读取浮点数的函数getfloat。getfloat函数的返回值应该是什么类型?

C程序设计语言 &#xff08;第二版&#xff09; 练习 5-2 练习 5-2 模仿函数getint的实现方法&#xff0c;编写一个读取浮点数的函数getfloat。getfloat函数的返回值应该是什么类型&#xff1f; 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xf…

书生·浦语第三次作业

我最近在参加书生浦语大模型实战营&#xff0c;这是第三次作业打卡&#xff01; 如果你也想两周玩转大模型微调&#xff0c;部署与测评全链路。报名链接&#xff1a;invite 书生浦语大模型实战营报名 邀请码可以填026014 一、基础作业&#xff1a;复现课程知识库助手搭建过程…

LC474. 一和零

代码随想录 class Solution {public int findMaxForm(String[] strs, int m, int n) {int [][] dp new int [m1][n1];int oneNum,zeroNum;for(String str : strs){oneNum 0 ;zeroNum 0;for(char ch : str.toCharArray()){if(ch 0){zeroNum ;}else{oneNum ;}}for(int i m …

WEB之HTML练习

第一题&#xff1a;用户注册界面 HTML代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…

Java解决删除子串后的字符串最小长度

Java解决删除子串后的字符串最小长度 01 题目 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c;删除所…

【Python】使用tkinter设计开发Windows桌面程序记事本(2)

上一篇&#xff1a;【Python】使用tkinter设计开发Windows桌面程序记事本&#xff08;1&#xff09;-CSDN博客 下一篇&#xff1a; 作者发炎 此代码模块是继承上一篇文章的代码模块的基础上开始设计开发的。 如果不知道怎么新建"记事本项目"文件夹&#xff0c;请参…

第二百五十八回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"模拟对话窗口的页面"相关的内容&#xff0c;本章回中将介绍如何创建一个可以输入内容的对话框.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念…

Rust 工作空间

Rust 第23节 工作空间 工作空间 当一个项目需要多个crate时&#xff0c;就会用到工作空间 先在空白目录下创建一个 Cargo.toml 这个Cargo.toml 就是对工作空间进行管理 写上属性 [workspace]members ["adders" ]比如一个二进制crate 写完之后在命令行创建它 同…

C++ 多态以及多态的原理

文章目录 多态的概念多态的构成条件虚函数的重写虚函数重写的两个例外 重载、重写(覆盖)、重定义(隐藏)对比C11 final 和 override关键字抽象类接口继承和普通继承多态的原理虚函数表多态的原理 单继承和多继承关系的虚函数表单继承中的虚函数表多继承中的虚函数表 多态的概念 …

Linux安装nginx并设置为开机自启动

1.更新gcc安装包 yum install -y gcc pcre-devel zlib-devel2.下载文件并解压 命令如下 wget https://nginx.org/download/nginx-1.18.0.tar.gz //解压nginx tar -zxvf nginx-1.18.0.tar.gz //进入后进行指定安装位置 ./configure --prefix/usr/local/nginx //安装 make &…

面试宝典之spring框架常见面试题

F1、类的反射机制有啥用&#xff1f; &#xff08;1&#xff09;增加程序的灵活性&#xff0c;可扩展性&#xff0c;动态创建对象。 &#xff08;2&#xff09;框架必备&#xff0c;任何框架的封装都要用反射。&#xff08;框架的灵魂&#xff09; F2、获取Class对象的三种方…

boost graph计算最短路径程序异常退出问题解决

之前使用的boost 1.55版本&#xff0c;升级使用1.73版本后&#xff0c;在调用dijkstra_shortest_paths时会出现弹窗 abort()has been called 点击调试&#xff0c;看调用栈信息&#xff0c;发现计算的距离值为负数。 刚开始时&#xff0c;距离初始值为numeric_limits<long&g…

小程序分销商城,打造高效线上购物体验

小程序商城系统&#xff0c;为您带来前所未有的在线购物体验。它不仅提供线上商城购物、在线下单、支付及配送等功能&#xff0c;还凭借其便捷性成为众多商家的首选。 想象一下&#xff0c;商家可以展示琳琅满目的商品&#xff0c;包括图片、文字描述、价格及库存等详尽信息。而…

说说java8新特性

java8新特性主要有&#xff1a;函数式接口、lambda表达式、Stream API、接口对于static方法和默认方法的支持。 一、函数式接口 函数式接口指的是只有一个抽象方法的接口&#xff0c;函数式接口用FunctionalInterface注解修饰&#xff0c;java中常用的函数式接口有Runnable、C…

鸿蒙开发笔记 2

提示&#xff1a;今天又是美好的一天呢&#xff01;&#xff01;&#xff01; 文章目录 一、网络管理 一、网络管理 应用权限 http请求

内网渗透实战攻略

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网&#xff1f; 什么是内网渗透&#xff1f; 内网渗透的目的&#xff1a; 内网…

2024--Django平台开发-Django知识点(六)

day06 Django知识点 今日概要&#xff1a; Form和ModelForm组件【使用】【源码】缓存【使用】ORM【使用】其他&#xff1a;ContentTypes、Admin、权限、分页、信号等 1.Form和ModelForm组件 背景&#xff1a;某个公司后台管理项目。 垃圾 def register(request):"&quo…