Kubernetes Deployment

2023-11-04

Deployment是Kubernetes1.2引入的新概念,引入的目的是为了更好的解决Pod的编排问题,为此Deployment内部使用了Replica Set来实现目的

Deployment 相对于RC的一个最大升级是我们可以随时知道当前Pod"部署"的进度,实际上由于一个Pod的创建、调度、绑定节点及在Node上启动对应的容器这一完整过程需要一定的时间,所以我们期待系统启动N个Pod副本的目标状态,实际上是一个连续变化的"部署过程"导致的最终状态


Deployment经典常用场景

1.创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程 2.检查Deployment的状态来看部署动作是否完成(Pod副本的数量是否达到预期的值) 3.更新Deployment以创建新的Pod (比如镜像升级) 4.如果当前Deployment不稳定,则回滚到一个早先的Deployment版本 5.暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布 6.扩展Deployment以应对高负载 7.查看Deployment的状态,以此作为发布是否成功的指标。 8.清理不再需要的旧版本ReplicaSets

RC主要功能

  • 确保Pod数量: 它会确保Kubernetes中有指定数量的Pod在运行,如果少于指定数量的Pod,RC就会创建新的,反之会删除多余的,保证Pod的副本数量不变
  • 确保Pod健康: 当Pod不健康,RC会杀死不健康的Pod,重新创建新的
  • 弹性伸缩: 在业务高峰或者低峰的时候,可以用RC来动态调整Pod数量来提供资源的利用率吧,当然也可以使用HPA来实现
  • 滚动升级: 滚动升级是一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定性

Deployment主要功能 Deployment主要职责和RC是一样的,保证Pod的数量和健康,二者大部分功能都是完全一致的,可以看成是一个升级版的RC控制器

  • 事件和状态查看: 可以查看deployment的升级详细进度和状态
  • 回滚: 当升级Pod的时候出现问题,可以使用回滚操作回滚到之前的任一版本
  • 版本记录: 每一次对Deployment的擦破自拍,都可以保存下来,这也是保证可以回滚到任一版本的基础
  • 暂停和启动: 对于每一次升级都能够随时暂停和启动

Deployment在滚动升级的时候会产生新的rs

创建一个Nginx Deployment

[root@master ~]# cat nginx-deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: abcdocker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: abcdocker
  template:
    metadata:
      labels:
        app: abcdocker
    spec:
      containers:
      - name: nginx
        image: nginx:1.13.5-alpine
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
详细解释:
NAME:定义的名称
DESIRED:Pod副本数量的期望值,即Deployment里定义的Replica
CURRENT:当前Replica的值,实际上是Deployment所创建的Replica Set里的Replica值,这个值不断增加,直到达到DESIRED为止,表明整个部署过程
UP-TO-DATE:最新版本的Pod的副本数量,用于指示在滚动升级的过程中,有多少副本已经成功升级
AVAILABLE:当前集群中可用的Pod副本数量,即集群中当前存活的Pod数量

创建nginx-deployment.yaml

[root@master ~]# kubectl create -f nginx-deployment.yaml 
deployment.apps/abcdocker created

查看deployment

[root@master ~]# kubectl get deployment
NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
abcdocker   1         1         1            0           18s

查看对应的Replica Set

[root@master ~]# kubectl get rs
NAME                   DESIRED   CURRENT   READY     AGE
abcdocker-86459dd76f   1         1         0         18m
$rs的命名与Deployment的名字有关系

查看Pod

[root@master ~]# kubectl get pods
NAME                         READY     STATUS              RESTARTS   AGE
abcdocker-86459dd76f-m6pj7   0/1       ContainerCreating   0          24m

Pod的命名以Deployment对应的Replica Set的名称为前缀,这种命名很清晰地表明了一个Replica Set创建了哪些Pod

运行 [kubetl describe deployments] 可以清楚的看到Deployment控制的Pod详细信息

查看deployment信息

[root@master ~]# kubectl get deployments
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2         2         2            2           33d

deployment 参数解释

参数 解释
DESIRED Pod的副本数量的期望值,即Deployment里定义的Replica
CURRENT 当前Replica的值,实际上是Deployment所创建的Replica set里的Replica值,这个值不断增加,直到达到DESIRED为止
UP-TO-DATE 最新版本的Pod的副本数量,用于指示在滚动升级的过程中,有多少个Pod副本已经成功更新
AVAILABLE 当前集群中可用的Pod副本数量,即集群中当前存活的Pod数量

查看对应的Replica Set 我们可以看到他的命名和Deployment的名字有关系

[root@master ~]# kubectl get rs
NAME                          DESIRED   CURRENT   READY     AGE
nginx-deployment-7c5b578d88   2         2         2         33d

Pod的管理对象除了RC和Deployment,还包括ReplicaSet、DaemonSet、StatefulSet、Job等

运行下述命令可以查看创建的Pod

[root@master ~]# kubectl get pods
NAME                                READY     STATUS    RESTARTS   AGE
nginx-deployment-7c5b578d88-gzqvf   1/1       Running   0          30d
nginx-deployment-7c5b578d88-jc5td   1/1       Running   1          30d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes Deployment 的相关文章

随机推荐

  • 深度学习中的迁移学习介绍

    迁移学习 Transfer Learning 的概念早在20世纪80年代就有相关的研究 这期间的研究有的称为归纳研究 inductive transfer 知识迁移 knowledge transfer 终身学习 life long lea
  • Java中的DatagramPacket与DatagramSocket的初步

    1 基本概念 a DatagramPacket与DatagramSocket位于java net包中 b DatagramPacket表示存放数据的数据报 DatagramSocket表示接受或发送数据报的套接字 c 由这两个类所有构成的网
  • 安装GPU版本的pytorch

    前言 最近新建了一个虚拟环境 但是在跑代码的时候出现问题 libc10 cuda so cannot open shared object file No such file or directory 去网上搜了一下 说是安装的pytorc
  • 浅析消费金融风控之贷中、贷前、贷后风控(风控模型、决策引擎)

    消费金融迎来 爆发增长 期 预计到2020年 我国消费信贷总市场规模将达到45万亿元 年复合增长率将达到18 前景广阔的消费金融市场 将成为我国经济发展的重要内驱力 业务痛点 征信体系缺失 分支风控标准不一 欺诈手段层出不穷 多头借贷现象普
  • 谈谈「数据仓库构建与分层」

    1 先导知识之 数据库与ER建模 1 1 数据库 DataBase 数据库是按照数据结构来组织 存储和管理数据的仓库 是一个长期存储在计算机内的 有组织的 可共享的 统一管理的大量数据的集合 数据库是以一定方式储存在一起 能与多个用户共享
  • CentOS7搭建Redis Cluster

    目录 什么是Redis Cluster Redis集群介绍 Redis 集群的数据分片 Redis 集群的主从复制模型 Redis 一致性保证 搭建Redis Cluster 三主三从 准备工作 启动所有节点服务 建立集群关系 验证 集群状
  • 找回误删除的文件

    author skate time 2009 11 19 今天在网上帮个美女恢复数据 他昨天不小心 把重要文件删除 而今天又急用 于是我就帮个小忙用两款数据维护软件DiskGenius EasyRecovery帮其恢复 这两个软件结合使用
  • python自定义标识符_python自定义异常

    python自定义异常 try 异常在try块里抛 如果会产生多个异常 捕捉第一个 匹配except 后边的不再捕捉 except 抓异常 else try无异常 才会执行else finally 无论try块是否抛异常 永远执行的代码 通
  • ZYNQ产品生产拷机问题思考

    目前设计的ZYNQ产品支持QSPIFLASH SDka EMMC启动 主要启动方式主要有以下几种 全部启动文件存放在QSPIFLASH ZYNQ支持的QSPIFLASH为16MB大小 如果UBOOT 内核 设备树 文件系统全部存放在QSPI
  • 爬虫破解js加密破解(二) 有道词典js加密参数 sign破解

    在爬虫过程中 经常给服务器造成压力 比如耗尽CPU 内存 带宽等 为了减少不必要的访问 比如爬虫 网页开发者就发明了反爬虫技术 常见的反爬虫技术有封ip user agent 字体库 js加密 验证码 字符验证码 滑动验证码 点触式验证码等
  • Qt中如何让Widget窗体等子控件随边框自适应缩放

    实现的原则很简单 一切子控件都要在布局中添加 如果是widget作控件 widget内部也要有布局 本文将通过Qt Designer和代码化UI设计两种途径讲解实现方法 一 以Qt Designer为例 想要在这个Widget窗体内部再添加
  • Nginx反向代理与conf原理

    Nginx主要功能 Webservice 反向代理 负载均衡 逻辑上 nginx和server的关系是这样的 Nginx和路由器 交换机有什么区别 路由器是物理网关 nginx是应用层网关 物理上 他们的关系是下图这样的 Nginx hap
  • 第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • C语言详解系列——循环语句详解(1)while语句的语法结构

    文章目录 while语句 break continue while语句 之前的学习中我们了解到了if语句的用法 这个语句只会执行一次 但在我们的生活当中有许多事情是需要重复去做的 那我们应该怎么实现呢 C语言当中给我们引入了 while语句
  • Day 9

    1 在主函数定义一维数组并赋值 要求 定义函数实现冒泡排序 有参无返函数 定义函数实现输出 有参无返函数 include
  • CPU负载怎么理解?是不是CPU利用率?

    http www hackbase com tech 2011 08 16 64970 html 昨天查看Nagios警报信息 发现其中一台服务器CPU负载过重 机器为CentOS系统 信息如下 2011 2 15 星期二 17 50WAR
  • 这应该是最全的,Fiddler手机App抓包详解,看完还不会来找我...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • [转自华尔街的强帖]怎样才能嫁给有钱人

    一个年轻漂亮的美国女孩在美国一家大型网上论坛金融版上发表了这样一个问题帖 我怎样才能嫁给有钱人 我下面要说的都是心里话 本人 25 岁 非常漂亮 谈吐文雅 有品位 想嫁给年薪 50 万美元的人 你也许会说我贪心 但在纽约年薪 100 万才算
  • YOLOV7详细解读(三)技术要点归纳

    YOLOV7技术要点归纳 技术要点归纳 YOLOV7技术要点归纳 前言 一 YOLOV7是什么 二 论文贡献 三 相关工作 四 网络架构 五 重参数化 六 模型缩放 七 E ELAN 结构图 分组卷积 八 损失函数 九 动态标签分配策略 步
  • Kubernetes Deployment

    Deployment是Kubernetes1 2引入的新概念 引入的目的是为了更好的解决Pod的编排问题 为此Deployment内部使用了Replica Set来实现目的 Deployment 相对于RC的一个最大升级是我们可以随时知道当