chenqionghe

一、什么是Deployment对象

明明ReplicaSet已经可以控制pod的数量了,为什么还需要Deployment?
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

三、查看历史和回滚

查看历史版本

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}

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

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-06-15
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-04
  • 2021-11-30
  • 2021-10-12
猜你喜欢
  • 2021-09-25
  • 2021-07-20
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2021-08-19
  • 2021-05-21
  • 2022-12-23
相关资源
相似解决方案