kubernetes资源对象之deployment

2020-04-23  本文已影响0人  一舍

Deployment 提供了一个声明式定义 (declarative) 方法来创建 Pod 和 ReplicaSet。

你只需要在 Deployment 中描述你想要的目标状态,Deployment controller 就会将 Pod 和 Replica Set 的实际状态改变到你描述的目标状态。

创建Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
kubectl create -f docs/user-guide/nginx-deployment.yaml --record

Deployment 更新

Deployment 的 rollout 当且仅当 Deployment 的 pod template中的 label 更新或者镜像更改时被触发。

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1

查看rollout状态

kubectl rollout status deployment/nginx-deployment

Deployment 可以保证在升级时只有一定数量的 Pod 是 down 的。默认的,它会确保至少有比期望的 Pod 数量少一个的 Pod 是 up 状态(最多一个不可用)。

Deployment 同时也可以确保只创建出超过期望数量的一定数量的 Pod。默认的,它会确保最多比期望的 Pod 数量多一个的 Pod 是 up 的(最多 1 个 surge)。

Deployment 回滚

默认情况下,kubernetes 会在系统中保存所有的 Deployment 的 rollout 历史记录,以便你可以随时回退,也就是说当且仅当 Deployment 的 Pod template 被更改,就会创建出一个新的 revision。

查询历史版本

kubectl rollout history deployment/nginx-deployment

回退到上一个版本

kubectl rollout undo deployment/nginx-deployment

回退到指定版本

kubectl rollout undo deployment/nginx-deployment --to-revision=2

可以通过设置 .spec.revisonHistoryLimit 项来指定 deployment 最多保留多少 revison 历史记录

上一篇 下一篇

猜你喜欢

热点阅读