目录:

一,引入Deployment

二,Deployment支持的功能

三,Deployment资源清单文件详解

四,滚动更新及回滚实验

五,弹性伸缩实验


一,引入Deployment

对于kubernetes来说Pod是资源调度最小单元,kubernetes主要的功能就是管理多个Pod,Pod中可以包含一个或多个容器,而kubernetes是如可管理多个Pod的呢?对,没错,就是通过控制器,比如Deployment和ReplicaSet(rs)。

kubernetes下有多个Deployment,Deployment下管理RepliceSet,通过RepliceSet管理多个Pod,通过Pod管理容器。

它们之间的关系图如下:

二,Deployment支持的功能

1,动态水平的弹性伸缩

容器对比虚拟机,最大的优势就在于容器可以灵活的弹性伸缩,而这一部分工作由kubernets中的控制器进行调度。

Deployment的弹性伸缩本质指得是RS下Pod的数量增加或减少

在创建Deployment时会相应创建一个RS,通过RS实现弹性伸缩的自动化部署,并在很短的时间内进行数量的变更

弹性伸缩通过修改yaml文件中的replicas参数实现

修改yaml文件后,通过 apply 命令重新应用而实现扩容或缩容

2,支持动态的回滚和滚动更新

定义一个Deployment会创建一个新的RS,通过RS创建Pod,删除Deployment控制器,同时也会删除所对应的RS及RS下控制的Pod资源。

可以说Deployment是建立在RS之上的一种控制器,可以管理多个RS,当每次需要更新Pod的时候,就会自动生成一个新的RS,把旧的RS替换掉,多个RS可以同时存在,但只有一个RS在运行,因为新RS里生成的Pod会依次去替换旧RS里面的Pod,所以需要等待时间,大约十分钟。

Deployment还支持回滚到以前的历史版本。

更新节奏和更新逻辑:

加入Deployment中定义了replicas数量为5(也就是期望的Pod数为5个)但在实际更新时会额外多几个,假如说能多一个,但是不可以少,那么更新的过程就是先增加一个Pod,再删除一个,增一个,删一个,但一般感受不到,这里只是讲一下原理,可以不必太在意。

三,Deployment资源清单文件详解

apiVersion: apps/v1            ##版本
kind: Deployment               ##类型
metadata:                      ##Deployment的元数据name: httpd                  ##Deployment的名字labels:                      ##标签app: httpd                 ##标签app=httpd
spec:                          ##Pod的信息replicas: 3                  ##Pod的副本数selector:                    ##标签选择器matchLabels:               ##查找匹配的标签app: httpd               ##app=httpdtemplate:                    ##Pod的模板信息,根据模板信息来创建Podmetadata:                  ##Pod的元数据labels:                  ##Pod的标签app: httpd             ##标签app=httpdspec:                      ##容器的信息containers:              ##容器- name: httpd            ##容器名image: httpd           ##容器所需的镜像ports:                 ##端口- containerPort: 80    ##容器暴露的端口

当我们不知道该怎么写时可以通过命令来查看更多详细内容:

查看Deployment资源对象由哪几部分组成

kubectl explain deployment

可以一级一级的查看,想查看什么只需要在后面加上  .字段名  即可。例如查看Deployment下的spec字段

kubectl explain deployment.spec

在写yaml文件时不仅要注意字段,还要注意字段之间的等级,每级之间一般用两个空格隔开,文件中不可以出现tab键,当你在不清楚要空几个的时候,可以用kubectl explain命令查一下,看看你加了几个点,点数*2=空格数。如kubectl explain deployment.spec,有一个点,那就是1*2=2,需空两个格。

四,滚动更新及回滚实验

1,创建deployment

2,访问其中一个页面内容

3,滚动更新:更改镜像,

4,查看Pod并访问页面内容,可以看到已经改变

5,查看历史版本,实现回滚更新,需要大概等10分钟,才能完全完成

查看deployment的更新记录

kubectl rollout history deployment nginx-deployment

查看历史版本2的详细信息

kubectl rollout history deployment nginx-deployment --revision=2

回滚到历史版本2,可以看到当前只会滚完毕了2个Pod

kubectl rollout undo deployment nginx-deployment --to-revision=2

五,弹性伸缩实验

1,创建一个Deployment,4副本

kubectl apply -f jpzhttpd.yaml

2,缩为3副本

kubectl apply -f jpzhttpd.yaml

到此为止,结束,感谢大家的观看,你们的每一个赞,以及阅读量,都是我跟新的动力,让我们一起学习,加油!!!

K8S控制器之Deployment详解及配置。相关推荐

  1. 【云原生之k8s】k8s管理工具kubectl详解

    [云原生之k8s]k8s管理工具kubectl详解 前言 一.陈述式管理 (1)陈述式资源管理方法 (2)k8s相关信息查看 ①查看版本信息 ②查看节点信息 ③查看资源对象简写 ④查看集群信息 ⑤配置 ...

  2. Deployment详解

    Deployment详解 RC & RS ReplicationController (复制控制器,RC)和ReplicaSet(复制集,RS)是两种简单部署pod的方式,因为在生产环境中,主 ...

  3. Kubernetes K8S之存储PV-PVC详解

    K8S之存储PV-PVC概述与说明,并详解常用PV-PVC示例 概述 与管理计算实例相比,管理存储是一个明显的问题.PersistentVolume子系统为用户和管理员提供了一个API,该API从如何 ...

  4. k8s安装和部署详解

    k8s安装和部署详解 文章目录 k8s安装和部署详解 kubernetes官方提供的三种部署方式 minikube kubeadm 二进制包 使用kubeadm方式安装 1.准备环境 2.确认dock ...

  5. python利器怎么编程-Python任务调度利器之APScheduler详解

    任务调度应用场景 所谓的任务调度是指安排任务的执行计划,即何时执行,怎么执行等.在现实项目中经常出现它们的身影:特别是数据类项目,比如实时统计每5分钟网站的访问量,就需要每5分钟定时从日志数据分析访问 ...

  6. Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  7. 如何用树莓派连接语音模块,红外模块来控制红外设备详解

    如何用树莓派连接语音模块,红外模块来控制红外设备详解 1.硬件设备 2.软件准备 3.解码 1.红外解码流程 1.连接红外设备(与TTL串口相连) 2.获取开关红外电器的码 4.我们使用树莓派如何和W ...

  8. 详解keepalived配置和使用

    详解keepalived配置和使用 一.keepalived简介: keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Ke ...

  9. mysql mybatis配置_mybatis详解 与配置mybatis+spring+mysql.doc

    mybatis详解 与配置mybatis+spring+mysql.doc 还剩 30页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...

最新文章

  1. 简单解决用VS编写hello world时命令行一闪而过
  2. 堆和栈的主要区别由以下几点:
  3. bootstrap回顾
  4. java定时器结合springboot_SpringBoot开发案例之整合定时任务(Scheduled)
  5. 另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)
  6. JMX和Spring –第2部分
  7. python中dict函数_dict()函数以及Python中的示例
  8. 微服务与单体架构:IT变革中企业及个体如何自处?
  9. 1 WM配置-企业结构-定义-创建仓库号(Warehouse Number)
  10. raspberry pi_构建自己的Raspberry Pi龙卷风预警系统
  11. bat ping 返回值_专科生可以进bat大厂吗?
  12. Linux的运行级别和chkconfig用法
  13. side-by-side
  14. hdu 3926 hands in hands
  15. 第13章 集成学习和随机森林 学习笔记上
  16. 解决Promise.all一个被rejected,整个都被rejected的缺陷
  17. android监控io产生的应用,Android IO性能分析及排查
  18. JAVA期末大作业之学生信息管理简洁版系统
  19. ctfshow命令执行
  20. autojs root权限命令

热门文章

  1. UE4 回合游戏项目 01- 创建人物-玩家角色
  2. 保险经纪人在营销中的作用
  3. 保险代理机构管理规定
  4. 基于猎人猎物优化算法的函数寻优算法
  5. 向日葵深度linux,阳光明媚-Deepin 20社区版Linux安装向日葵远控Linux版
  6. Simulink学习——弹球仿真(一)
  7. python常用函数(持续更新)
  8. java .do是什么文件_.do是什么文件
  9. 【Linux命令Day1笔记】
  10. 初中计算机的发展与应用教案,【初中信息技术教案12篇】_初中信息技术教案范文大全_2021年初中信息技术教案_东城教研...