Deployment相对于RC的优势

RS与Deployment主要用于替代RC。RS的全称为Replica Set。相对于RC,RS与Deployment的优势如下:

  • RC只支持基于等式的selector,如env=dev或者environment!=qa。但在RS中,还支持新的基于集合的selector,如version in (v1.0,v2.0)或者env not in (dev,qa)。这给复杂的运维管理带来方便
  • 使用Deployment升级Pod只需要定义Pod的最终状态,k8s会为你执行必要的操作。虽然使用kubectl rolling-update也可以完成滚动升级,但它是在客户端与服务端多次交互控制RC完成的,所以REST API中并没有rolling-update的接口,这为定制自己的管理系统带来了一些麻烦。Deployment拥有更加灵活的升级、回滚功能。

Replica Set目前与RC的区别只是支持的selector不同,后续会加入更多的功能。Deployment使用了Replica Set,是更高一层的概念。除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用Deployment而不直接使用Replica Set。

Deployment配置文件

Deployment的配置与RC基本相同,详细配置可以参考官方文档下面直接给出一个配置示例deployment.yml内容如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: hello-deploymentnamespace: default
spec:replicas: 3selector:matchLabels:name: hello-deploymentstrategy:type: RollingUpdaterollingUpdate:maxSurge: 10%maxUnavailable: 0     template:metadata:labels:name: hello-deploymentspec:containers:- name: webserverimage: nginx:1.14ports:- containerPort:80

需要说明的是strategy部分,用于定义deployment的升级策略。具体的deployment滚动升级的详细操作可以参考另一篇文章《Service滚动更新》。这里简单说下这几个配置项的意义:

  • spec.strategy:用于定义升级的策略
  • spec.strategy.type:定义使用何种方式升级。一种是RollingUpdate,即滚动升级。另一种方式为Recreate。即先将所有旧的Pod停止,然后再启动新的pod。默认策略即为RollingUpdate
  • spec.strategy.type.rollingUpdate:如果采用RollingUpdate的方式进行升级操作,则可以定义更详细的滚动升级策略
  • spec.strategy.type.rollingUpdate.maxSurge: 指定在升级时,最大可以创建多少个pod。这个值可以是一个绝对值数字,也可以是个百分比。例如,当这个值指定为30%时,也就是说,新旧pod的总量不能超过130%。简单来讲,就是在滚动升级时,会先启动30%的新的pod。然后开始杀掉旧的pod,每当一个旧的pod被杀掉,一个新的pod的会被启动,始终保持总量不超过130%,直至更新完成。需要说明的是,当maxUnavailable为0时,maxSurge的值不能为0。
  • spec.strategy.type.rollingUpdate.maxUnavailable: 指定在升级时,最大不可用的pods的值。可以是一个绝对值数字,也可以是个百分比。例如,当这个值指定为30%时,最少可用的Pod为70%,也就是说,在滚动升级的时候,会先杀掉30%旧的pod,然后开始启动新pod。当一个新的Pod被创建,一个旧的Pod就会被销毁。始终保持可用的pod在总量的70%,直至升级完成。需要说明的是,当maxSurge为0时,maxUnavailable的值不能为0。

创建deployment:

kubectl create -f deployment.yml --recode

转载于:https://www.cnblogs.com/breezey/p/8810094.html

Kubernetes Deployment与Replica Set相关推荐

  1. 容器编排技术 -- Kubernetes Deployment

    容器编排技术 -- Kubernetes Deployment 1 创建 Deployment 1.1 Pod-template-hash label 2 更新Deployment 2.1 Rollo ...

  2. WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS

    2019独角兽企业重金招聘Python工程师标准>>> WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS The con ...

  3. kubernetes deployment,pod 实践

    本文同步gitlab 更新 https://github.com/lifalin0802/falin_repos/blob/master/kubernetes_manual.md 创建自主pod ku ...

  4. Kubernetes Deployment控制器(二十)

    前面我们学习了 ReplicaSet 控制器,了解到该控制器是用来维护集群中运行的 Pod 数量的,但是往往在实际操作的时候,我们反而不会去直接使用 RS,而是会使用更上层的控制器,比如我们今天要学习 ...

  5. 2021完整版:Kubernetes Deployment故障排除的可视化指南

    原文发表于kubernetes中文社区,为作者原创翻译 更多kubernetes文章,请多关注kubernetes中文社区 文章目录 连接Deployment 和 Service 连接 Service ...

  6. Kubernetes Deployment

    什么是Deployment? Deployment提供了运行Pod能力,并且为Pod提供滚动升级.伸缩.副本等功能,一般用于运行无状态的应用.目前建议使用Deployment来代替RelicaSet及 ...

  7. Kubernetes:全面了解 Deployment

    本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...

  8. kubernetes对象之deployment

    系列目录 简述 Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用.典型的应 ...

  9. 容器编排技术 -- Kubernetes 联邦 Deployment

    容器编排技术 -- Kubernetes 联邦 Deployment 1 Before you begin 2 创建联邦 Deployment 2.1 在底层集群中分布副本 3 更新联邦 Deploy ...

最新文章

  1. [JUC-5]ConcurrentHashMap源码分析JDK8
  2. SAP S/4 Hana On-premise Edition 1511做了哪些简化
  3. BD-09 GCJ-02 WGS84 坐标之间的转换
  4. JAVA常用的数据结构集合框架总结
  5. __asm___错误:“”前应有'=',',',',','asm'或'_attribute_'
  6. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)
  7. [Java] 蓝桥杯ALGO-145 算法训练 4-1打印下述图形
  8. 【小白向教程】从零开始为你的手机安装Win11系统
  9. Excel 使用技巧集锦—163种技巧
  10. Redis 集群原理
  11. Verilog GPIO 模块设计
  12. EDA 电子设计自动化VHDL系列课程8 – 脉冲信号发生器
  13. 疫情期间,在家办公,这几款高效远程办公协作工具解决燃眉之急
  14. Qt Creator5.7添加qwt绘图插件之成功案例解析
  15. 宋分题——Java实现登录窗口 和 信息录入窗口
  16. java读取pdf文本转换html
  17. 想天浏览器:推荐国内主流浏览器TOP10
  18. 计算机二级怎么复习,全国计算机等级考试应该如何备考
  19. js es6使用数组的every方法遇到的问题
  20. NOI模拟 五彩斑斓

热门文章

  1. Mysql-4-数据库的基本操作
  2. python学习之--安装IDE(eclipse+pydev)
  3. 关于性能测试几个名词概念的说明
  4. PhpForm表单验证
  5. jquery 只能输入汉字
  6. Java Socket入门实例
  7. WebC.BBS - 网上团队管理-责任心,主动性,积极性划分
  8. C#中StringBuilder类的使用
  9. GUI(三)一个菜单的程序
  10. Docker网络相关