【Kubernetes】Deployment 的清理策略及编写规则

Deployment 控制器》系列,共包含以下几篇文章:

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

Deployment 的清理策略及编写规则

在这里插入图片描述

1.Deployment 的清理策略

在 Deployment 中配置 spec.revisionHistoryLimit 字段,可以指定其 清理策略。该字段用于指定 Deployment 保留旧 ReplicaSet 的个数,即更新 Pod 前的版本个数。该字段的默认值是 10

创建 revisionhistory-demo.yaml 文件,并在其中输入以下内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: revisionhistory-demo
  labels:
    app: nginx
spec:
  revisionHistoryLimit: 1
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

🚀 这里将 .spec.revisionHistoryLimit 字段设置成 1 1 1,即只保留 1 1 1 个旧版本。

运行以下命令创建 Deployment。

kubectl apply -f revisionhistory-demo.yaml

将镜像的版本从 nginx:1.14 升级到 nginx:1.7.9

kubectl --record deployment.apps/revisionhistory-demo \
set image deployment.apps/revisionhistory-demo nginx=nginx:1.7.9

执行以下命令追溯修改的历史。

kubectl rollout history deployment revisionhistory-demo

输出的信息如下:

在这里插入图片描述

将镜像的版本从 nginx:1.7.9 升级到 nginx:1.9.1

kubectl --record deployment.apps/revisionhistory-demo \
set image deployment.apps/revisionhistory-demo nginx=nginx:1.9.1

执行以下命令追溯修改的历史。

kubectl rollout history deployment revisionhistory-demo

输出的信息如下:

在这里插入图片描述

🚀 由于 .spec.revisionHistoryLimit 字段被设置成了 1 1 1,所以 Deployment 控制器只会保留 1 1 1 个旧版本,revision 1 版本已经被自动清除了。

将 Deployment 回滚到 revision 1 版本。

kubectl rollout undo deployment revisionhistory-demo --to-revision=1

这时将出现以下错误信息:

在这里插入图片描述

将 Deployment 回滚到 revision 2 版本。

kubectl rollout undo deployment revisionhistory-demo --to-revision=2

重新查看 Deployment 的修改历史。

kubectl rollout history deployment revisionhistory-demo

输出的信息如下:

在这里插入图片描述

🚀 可以看到,即使执行了回滚操作,也会在修改历史记录中增加一个新的版本。

2.Deployment 的编写规则

deployment-demo.yaml 文件和 revisionhistory-demo.yaml 文件可以看出,与创建 Kubernetes 的其他资源一样,创建 Deployment 也需要指定 apiVersionkindmetadata字段,另外还需要指定 .spec 字段。

  • apiVersion:指定创建 Deployment 对象所使用的 Kubernetes API 版本。
  • kind:指定创建的对象的类别,这里是 Deployment。
  • metadata:指定 Deployment 对象的名称和标签信息等。
  • .spec:指定 Pod 的匹配信息和 Pod 的模板信息。其中只有 .spec.selector.spec.template 是必需的字段。
    • .spec.selector:该字段通过标签的匹配,将 Deployment 对象与对应的 Pod 进行关联。因此,在定义标签时应保证其唯一性。
    • .spec.template:该字段用于创建 Pod 的模板,语法规则与创建 Pod 的语法规则完全相同。
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值