Kubernetes Deployment与Replica Set

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-deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 10%
      maxUnavailable: 0
  replicas: 3
  template:
    metadata:
      labels:
        name: hello-deployment
    spec:
      containers:
      - name: pod
        image: index.tenxcloud.com/tailnode/hello:v1.0
        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 --recode

原文地址:https://www.cnblogs.com/breezey/p/8810094.html

时间: 2024-10-09 10:59:07

Kubernetes Deployment与Replica Set的相关文章

kubernetes deployment维护常用命令

deployment样本文件 $ cat hello-world.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: hello-world namespace: dev labels: app: hello-world spec: replicas: 3 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: lab

kubernetes deployment升级和回滚

a.创建deployment pod kubectl run mynginx --image=docker.io/nginx:1.13 --replicas=4 --record 准备svc文件 apiVersion: v1 kind: Service metadata: name: nginxsvc spec: type: NodePort ports: - port: 80 nodePort: 30080 selector: run: mynginx #修改为需要关联pod的lable参数,

Quick deployment of Kubernetes - VPC environment on Alibaba Cloud

https://www.alibabacloud.com/forum/read-830 This article illustrates how to quickly deploy a safe Kubernetes cluster on Alibaba Cloud VPC, and install and use the kubeadm tool. The tool is part of k8s-release1.5. (Note: kubeadm only has a beta versio

Kubernetes集群中Service的滚动更新

Kubernetes集群中Service的滚动更新 二月 9, 2017 0 条评论 在移动互联网时代,消费者的消费行为已经"全天候化",为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足消费者的需求.很难想像如今还会有以"中断业务"为前提的服务系统更新升级.如果微信官方发布公告说:每周六晚23:00~次日凌晨2:00进行例行系统升级,不能提供服务,作为用户的你会怎么想.怎么做呢?因此,各个平台在最初设计时就要考虑到服务的更新升级问题,部署在Kubern

Centos7下yum安装kubernetes

一.前言 ?? Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上最新版本为1.5.2. 本文基于Centos7.5构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能. 以下为Kubernetes的架构设计图: 1. Pods ?? 在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个

Kubernetes(一)--简介

一.什么是kubernetes(K8s)? Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到的经验与教训. Kubernetes提供应用部署.维护. 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用.当前Kubernetes支持GCE.vShpere.CoreOS.OpenShift.Azure等平台,除此之外,也可以直接运行在物理机上.kubernetes是一个

kubernetes云平台管理实战:HPA水平自动伸缩(十一)

一.自动伸缩 1.启动 [root@k8s-master ~]# kubectl autoscale deployment nginx-deployment --max=8 --min=2 --cpu-percent=80 deployment "nginx-deployment" autoscaled 2.查看创建 [root@k8s-master ~]# kubectl get all NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE de

[转帖]新手必读,16个概念入门 Kubernetes

新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教程/入门教程 阅读(333) 作者:汉科云团队 评论(0) Kubernetes是Google开源的容?集群管理系统,是Google多年?规模容?管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署.维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态

Kubernetes高级进阶之pod的自动扩容/缩容

目录:实践1:基于autoscaling cpu指标的扩容与缩容实践2:基于prometheus自定义指标QPS的扩容与缩容 Pod自动扩容/缩容(HPA) Horizontal Pod Autoscaler(HPA,Pod水平自动伸缩),根据资源利用率或者自定义指标自动调整replication controller, deployment 或 replica set,实现部署的自动扩展和缩减,让部署的规模接近于实际服务的负载.HPA不适于无法缩放的对象,例如DaemonSet. HPA主要是