当前位置:首页|资讯

【赵渝强老师】K8s中的Deployment控制器

作者:赵渝强老师发布时间:2024-09-20

K8s的Deployment将Pod部署成无状态的应用程序,它只关心Pod的数量、Pod更新方式、使用的镜像和资源限制等。由于是无状态的管理方式,因此Deployment中没有角色和顺序的概念,换句话说:Deployment中没有状态。视频讲解如下:

通过使用Deployment,可以让开发人员上线部署Pod、设置Pod的副本、实现Pod的升级与回滚。通过在yaml文件中描述Deployment的目标是什么,Deployment控制器就会自动完成对Pod和Replica Set的管理。Kubernetes运行创建一个新的Deployment,也可以用一个新的Deployment替换旧的Deployment。

提示:ReplicaSet是下一代复本控制器,它可以独立使用。但在Kubernetes中主要是被Deployment作为协调Pod的创建、更新和删除。当使用Deployment控制器时,它会自动创建ReplicaSets,并对其进行管理。

Deployment、ReplicaSet和Pod之间的关系可以通过下图来说明。


下面的描述了创建和更新Deployment的过程。

  • 创建Deployment的过程:Deployment将创建ReplicaSet。ReplicaSet在后台根据指定的副本数创建Pod,并检查Pod的状态以确定Pod启动成功还是失败。

  • 更新Deployment的过程:当用户更新Deployment时,Kubernetes会创建一个新的ReplicaSet。Deployment会将Pod从旧的ReplicaSet迁移到新的ReplicaSet中。如果迁移失败或者Pod不稳定,Deployment会自动回滚到上一个版本。如果迁移成功,Deployment将清除旧的不必要的ReplicaSet。

在掌握的Deployment控制器的作用后,这里将通过一个示例来演示如何使用Deployment控制管理Pod。

(1)创建deployment-demo.yaml文件,并输入下面的内容:

其中的参数含义如下表所示。

(2)通过运行以下命令创建 Deployment。

(3)查看创建的Deployment和ReplicaSet信息。

输出的信息如下图所示:

(4)查看每个Pod自动生成的标签,如下图所示。

(5)修改yaml文件来实现更新的目的。下面的yaml文件将Nginx的版本升级到了1.9.1,并将Pod的副本数改成了4。

(6)通过运行以下命令重新应用 Deployment。

(7)获取Deployment的信息。

(8)执行下面的命令,将Nginx的版本更新到1.7.9。

(9)获取Deployment的信息。

(10)执行命令追溯修改的历史。

(11)执行命令将回滚到版本2。

(12)重新获取Deployment的信息。

(13)下面的命令将对Deployment进行缩放操作。

(14)下面的命令将暂停和恢复Deployment




Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1