Kubernetes的Deployment对象使用

一、什么是Deployment对象

明明ReplicaSet已经可以控制pod的数量了,为什么还需要Deployment?

简单的说,Deployment控制ReplicaSet的多个版本,ReplicaSet控制Pod个数

Deploymen实际上一个两层控制器,遵循一种滚动更新的方式来实升级现有的容器,这个能力的实现,依赖的就是ReplicaSet这个对象
当我们修改了Deployment对象后,Deployment控制器会使用修改后的模板,创建一个新的ReplicaSet对象,这时候有两个RelicaSet对象,
Deployment通过控制ReplicaSet对象的pod数量来达到滚动升级的效果
例如A和B,如果最终设置的pod数都是3,通过A-1,B+1这样的方式,直到A的pod数量变为0,最终 达到了滚动升级的目的。
同时,因为存在多个ReplicaSet,让回滚成为了可能

二、使用示例

示例yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

template字段,指定了创建pod的模板
replicas指定了pod的节点数量
还有一个 type: RollingUpdate,指定了滚动升级的策略

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
...
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1

查看deployments

kubectl get deployments demo2 -o wide
NAME    READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                        SELECTOR
demo2   2/3     3            2           24d   demo2        harbor.eoffcn.com/dev/demo2   workload.user.cattle.io/workloadselector=deployment-web-demo2

UP-TO-DATE:当前处于最新版本的 Pod 的个数,所谓最新版本指的是 Pod 的 Spec 部分与 Deployment 里 Pod 模板里定义的完全一致
AVAILABLE:当前已经可用的 Pod 的个数,即:既是 Running 状态,又是最新版本,并且已经处于 Ready(健康检查正确)状态的 Pod 的个数
READY:前处于 Running 状态的 Pod 的个数/用户期望的 Pod 副本个数

三、查看历史和回滚

查看历史版本

kubectl rollout history deployment ${name}
deployment.extensions/demo2
REVISION CHANGE-CAUSE
1 <none>
2 <none>
3 <none>
4 <none>

查看指定版本

kubectl rollout history deployment ${name} --revision=${version}

回滚到上一版本

kubectl rollout undo deployment  ${name}

回滚到指定版本

kubectl rollout undo deployment ${name} --to-revision=${version}

原文地址:https://www.cnblogs.com/chenqionghe/p/11602950.html

时间: 2024-10-10 19:00:58

Kubernetes的Deployment对象使用的相关文章

Kubernetes Ingress API 对象

Ingress 它是什么 如何暴露您Kubernetes集群内部 "应用服务" 并向外(互联网)提供访问服务!!! 通常情况下集群内部Service和Pod仅可在集群内部网络中通过IP地址访问.所有到达边界路由器的流量或被丢弃或被转发到其它地方.(Ingress 的存在即是完成以上之目的) 不直接使用Ingress资源,也可有多种方法暴露Service. 使用 Service.Type=LoadBalancer 使用 Service.Type=NodePort 有几个是废弃的 未定义I

Kubernetes的Secret对象的使用

Secret可以把想要访问的加密数据,存放到Etcd中,然后Pod可以通过的Volume的方式,访问到Secret保存的信息 ,每当数据修改的时候,Pod挂载的Secret文件也会被修改,特别适合用来存放账户密码 一.创建Secret对象 1. 通过文件创建 生成两个文件,分别是username.txt和password.txt echo "chenqionghe" > ./username.txt echo "111111" > ./password.

Kubernetes之Deployment控制器

Pod与controllers的关系 controllers:在集群上管理和运行容器的对象 通过label-selector相关联 Pod通过控制器实现应用的运维,如伸缩,滚动升级等 Deployment功能与应用场景 部署无状态应用 管理Pod和ReplicaSet 具有上线部署,副本设定,滚动升级,回滚等功能 提供声明式更新,例如只更新一个新的Image 应用场景:Web服务,微服务 原文地址:https://www.cnblogs.com/minseo/p/12096027.html

16.Kubernetes之Deployment

Deployment在继承Pod和Replicaset的所有特性的同时, 它可以实现对template模板进行实时滚动更新并具备我们线上的Application life circle的特性. 1.创建Deployment # vi deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: httpd-deployment labels: app: httpd-deployment spec: replicas: 2

Kubernetes对象

Kubernetes对象 在之前的文章已经讲到了很多Kubernets对象,包括pod,service,deployment等等.Kubernets对象是一种持久化,表示集群状态的实体.它是一种声明式的意图的记录,一般使用yaml文件描述对象,它使用Kubernetes对象来表示集群的状态,通过API/kubectl管理Kubernetes对象. name和uid 在Kubernetes对象模型中,使用了name和uid作为对象的唯一标识,其中name在同一种对象中是唯一的,在不同类型对象可以是

Kubernetes概念之deployment

一整天一整天的坐在办公室,真的很~~~,懵圈中....,求解救. 本文通过<Kubernetes权威指南>的概念部分学习总结 Deployment作用 Deployment与RC的作用其实是一样的,都是为了管理Pod的副本数 Deployment的使用场景 1)创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程. 2)检查Deployment的状态来看部署动作是否完成(Pod副本的数量是否达到了预期的值) 3)更新Deployment以创建新的Pod

Kubernetes/7.Pod控制器-Deployment

Pod控制器-Deployment 本章节开始,将对控制器逐个进行讲解和分析,我们先讲解最基础且最常用的控制器:Deployment! 控制器对象的分类 What is Deployment? Deployment的更新机制 ReplicaSet 命令补充 Deployment-demo 备注 1.控制器对象的分类 1.守护进程型 1.无状态应用:非系统级应用(Nginx等) 推荐使用:Deployment,ReplicaSet 2.无状态应用:系统级应用 应用场景:日志和监控收集客户端:场景就

kubernetes资源对象与基本概念解析

Objects 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置. Pod Node Namespace Service Volume PersistentVolume Deployment Secret StatefulSet DaemonSet ServiceAccount ReplicationController ReplicaSet Job CronJob SecurityContext ResourceQuo

Kubernetes基本概念和术语之Deployment、Horizontal Pod Autoscaler和StatefulSet

1.Deployment Deployment是为了更好的解决Pod的编排问题才引入的,可以把它看作是RC的一次升级,最大的升级是我么可以看到Pod部署的进度. Deployment典型的使用场景如下: 创建一个Deployment对象来生成对应的Replica Set(相当于RC的进化版,kubernetes v1.2引入)并完成Pod副本的创建过程 检查Deployment的状态来看部署动作是否完成(Pod副本的数量是否达到预期值) 更新Deployment以创建新的Pod(如镜像升级) 若