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

K8S学习之基础十四:k8s中Deployment控制器概述

Deployment控制器概述:

Deployment控制器是k8s中最常用的资源对象,为Replicaset和Pod创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态,通过定义一个Deployment控制器会创建一个新的ReplicaSet控制器,通过ReplicaSet创建Pod。删除Deployment控制器,也会删除Deployment控制器下对应的Replicaset控制器和Pod资源。

使用Deployment控制器而不是直接使用ReplicaSet,是因为Deployment对象拥有很多ReplicaSet没有的特性,比如滚动升级、金丝雀发布、蓝绿部署和回滚等。

声明式定义是指直接修改资源清单yaml文件,然后通过 kubectl apply -f *.yaml的方式,就可以更改资源

Deployment是建立在rs之上的一个控制器,可以管理多个rs,每次更新镜像版本,都会生成一个新的rs,把旧的rs替换掉,多个rs同时存在,但是只有一个rs运行

rs v1控制三个pod,删除一个pod,在rs v2上重新建立一个,依次类推,直到全部都是由rs v2控制,如果rs v2有问题,还可以回滚,Deployment是建构在rs之上的,多个rs组成一个Deployment,但是只有一个rs处于活跃状态.

Deployment工作原理:如何管理rs和pod

通过Deployment对象,可以轻松做到以下事情:

  1. 创建ReplicaSet和Pod
  2. 滚动升级和回滚应用
  3. 平滑扩容和缩容
  4. 暂停和继续Deployment

更新策略中的rollingupdate计算:

maxSurge(默认25%):最大允许个数(直接用)或百分比(往上加), 如 5+5*25%计算为 7

maxUnavailable(默认25%):最小允许个数(直接用)或百分比(往下减), 如 5-5*25%  计算为 4

Deployment的yaml文件:

vi deploy-demo.yaml
kind: Deployment
metadata:name: myapp-v1
spec:replicas: 2selector:matchLabels:app: myappversion: v1template:metadata:labels:app: myappversion: v1spec:containers:- name: myappimage: 172.16.80.140/myapp/myapp:v1imagePullPolicy: IfNotPresentports:- containerPort: 80

三者的名字也有关系:deploy-->replicas-->pod

访问pod返回v1版本

http://www.lryc.cn/news/547775.html

相关文章:

  • Vue3快速入门笔记
  • 【LeetCode104】二叉树的最大深度
  • SQLAlchemy系列教程:理解SQLAlchemy元数据
  • Apache Shiro 反序列化漏洞全解析(Shiro-550 Shiro-721)
  • 计算机毕业设计Python+DeepSeek-R1大模型空气质量预测分析(源码+文档+PPT+讲解)
  • 实例详细演示在Pytest中如何忽略警告
  • 03 HarmonyOS Next仪表盘案例详解(二):进阶篇
  • mysql进阶(三)
  • MySQL 架构、索引优化、DDL解析、死锁排查
  • AVM 环视拼接 鱼眼相机
  • 【Flink银行反欺诈系统设计方案】5.反欺诈系统全生命周期设计
  • aardio - 虚表 —— 两个虚表之间互相拖动交换数据
  • VScode 中文符号出现黄色方框的解决方法
  • LINUX网络基础 [二] - 网络编程套接字,UDP与TCP
  • Spring统一格式返回
  • Unity多Pass渲染与GPU Instancing深度优化指南
  • Redis高频面试题10个
  • 【数据库】MySQL常见聚合查询详解
  • 蓝桥备赛(11)- 数据结构、算法与STL
  • Linux的系统ip管理
  • 【决策树】分类属性的选择
  • uniapp vue3 微信小程序 uni.chooseLocation使用
  • 9. Flink的性能优化
  • 十二、OSG学习笔记-Control
  • 集群、分布式与微服务架构 区别
  • 如何使用SSH命令安全连接并转发端口到远程服务器
  • 【Java 基础】-- 设计模式
  • ComfyUI进阶学习全指南(2025年最新版)
  • Linux和gcc/g++常用命令总结
  • uniapp封装路由管理(兼容Vue2和Vue3)