系列目录

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-deployment
namespace: default
spec:
replicas: 3
selector:
matchLabels:
name: hello-deployment
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 10%
maxUnavailable: 0
template:
metadata:
labels:
name: hello-deployment
spec:
containers:
- name: webserver
image: nginx:1.14
ports:
- 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 --record

Deployment相对ReplicaSet优势的更多相关文章

  1. kubernetes 中,Pod、Deployment、ReplicaSet、Service 之间关系分析

    deploy控制RS,RS控制Pod,这一整套,向外提供稳定可靠的Service. 详见:https://blog.csdn.net/ucsheep/article/details/81781509

  2. 基于jenkins,tekton等工具打造kubernetes devops平台

    本贴为目录贴,将不断更新 目录 1.Docker在centos下安装以及常见错误解决 2.使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像) 3.无法访问gcr ...

  3. 用 Deployment 运行应用 - 每天5分钟玩转 Docker 容器技术(123)

    从本章开始,我们将通过实践深入学习 Kubernetes 的各种特性.作为容器编排引擎,最重要也是最基本的功能当然是运行容器化应用,这就是本章的内容. Deployment 前面我们已经了解到,Kub ...

  4. 读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技术(125)

    既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...

  5. k8s运行容器之deployment(三)--技术流ken

    deployment 我们已经知道k8s是通过各种controller来管理pod的生命周期.为了满足不同业务场景,k8s开发了Deployment.ReplicaSet.DaemonSet.Stat ...

  6. 详细聊聊k8s deployment的滚动更新(一)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-ce 三.准备镜像 首先准备 ...

  7. k8s的deployment应用

    Kubernetes 通过各种 Controller 来管理 Pod 的生命周期.为了满足不同业务场景,Kubernetes 开发了 Deployment.ReplicaSet.DaemonSet.S ...

  8. 读懂 Deployment YAML【转】

    既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...

  9. 用 Deployment 运行应用【转】

    从本章开始,我们将通过实践深入学习 Kubernetes 的各种特性.作为容器编排引擎,最重要也是最基本的功能当然是运行容器化应用,这就是本章的内容. Deployment 前面我们已经了解到,Kub ...

随机推荐

  1. CSS编码规范(转)

    1 前言 CSS作为网页样式的描述语言,在百度一直有着广泛的应用.本文档的目标是使CSS代码风格保持一致,容易被理解和被维护. 虽然本文档是针对CSS设计的,但是在使用各种CSS的预编译器(如less ...

  2. HDU——1058Humble Numbers(找规律)

    Humble Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  4. 刷题总结——Middle number(ssoj 优先队列)

    题目: 给定一个整数序列··有两个操作: add x,表示序列中加入x mid 表示询问这个序列的中位数 原始序列数量n<=100000,操作数m<=10000 题解: 这道题可以直接用权 ...

  5. Golang指针

    学过C语言的老司机都知道,指针就是一个变量,用于存储另一个变量的内存地址. 那么什么是变量呢?在现代计算机体系结构中所有的需要执行的信息代码都需要存储在内存中,为了管理存储在内存的数据,内存是划分为不 ...

  6. iOS-BMK标注&覆盖物

    在iOS开发中,地图算是一个比较重要的模块.我们常用的地图有高德地图,百度地图,谷歌地图,对于中国而言,苹果公司已经不再使用谷歌地图,官方使用的是高德地图.下面将讲述一下百度地图开发过程中的一些小的知 ...

  7. 【HDOJ6229】Wandering Robots(马尔科夫链,set)

    题意:给定一个n*n的地图,上面有k个障碍点不能走,有一个机器人从(0,0)出发,每次等概率的不动或者往上下左右没有障碍的地方走动,问走无限步后停在图的右下部的概率 n<=1e4,k<=1 ...

  8. NERDTree

    What's NERDTree    :    A tree explorer plugin for vim. Install : Using Vundle on .vimrc " for ...

  9. Scrapy学习-18-去重原理

    Scrapy去重原理 scrapy本身自带一个去重中间件 scrapy源码中可以找到一个dupefilters.py去重器   源码去重算法 # 将返回值放到集合set中,实现去重 def reque ...

  10. LeetCode OJ--Permutations II

    给的一个数列中,可能存在重复的数,比如 1 1  2 ,求其全排列. 记录上一个得出来的排列,看这个排列和上一个是否相同. #include <iostream> #include < ...