Kubernetes之Deployment

2025-06-11 179

Kubernetes(K8S)集群环境中,Deployment是一种高级资源控制器,为应用程序的部署、扩展和更新提供了声明式管理能力。Deployment通过管理ReplicaSet(副本集)间接控制Pod实例,实现了丰富的功能。站长百科本文将主要介绍Deployment在Kubernetes上的全方位使用指南。

Deployment通过管理ReplicaSet(副本集)间接控制Pod实例实现的功能如下:

1、创建并管理指定数量的Pod副本

2、自动替换不健康的Pod实例

3、支持滚动更新(Rolling Update)实现零宕机升级

4、提供版本控制机制,支持回滚到任意历史版本

5、实现Pod数量的水平扩展与收缩

6、自动清理不再需要的旧版本资源

一、体验Deployment

1、创建Deployment资源

使用kubectl命令行工具快速创建一个Nginx应用的Deployment:

kubectl create deploy nginx-deploy –image=nginx

2、查看Deployment状态

Kubernetes之Deployment

会得到一个名为 nginx-deploy 的deploy资源,而我们知道Deployment不直接控制Pod,是先控制ReplicaSe,所以先查看replicaSet资源。

3、查看ReplicaSet资源

Kubernetes之Deployment

以上名字是有规律的,在 nginx-deploy 后面加上了随机字符-6c758c8d46作为replicaSet的资源名称。

4、查看Pod实例

Kubernetes之Deployment

最后发现他们的是有联系,在nginx-deploy-6c758c8d46后面又多了随机字符作为pod的名称。

5、测试Pod自动恢复机制

手动删除一个Pod实例:

kubectl delete pods nginx-deploy-6c758c8d46-5swnb

再次查看Pod列表:

kubectl get pods

可以看到,Deployment会自动创建一个新的Pod实例来替换被删除的Pod。

6、查看Deployment配置

kubectl get deploy nginx-deploy -o yaml

简化后的Deployment配置示例:

Kubernetes之Deployment

二、滚动更新(Rolling Update)

滚动更新是Deployment的核心特性,允许在不中断服务的情况下逐步更新应用程序版本。更新过程中,新版本Pod逐步增加,旧版本Pod逐步减少,确保服务始终可用。

1、创建Deployment配置文件

创建nginx-deploy.yaml配置文件:

touch nginx-deploy.yaml

编辑内容:

Kubernetes之Deployment

应用配置创建Deployment:

kubectl create -f nginx-deploy.yaml

2、调整副本数量

获取deploy信息:

这里看UP-TO-DATE列(更新数)为1。接下来修改副本数为3。

Kubernetes之Deployment

再次查看状态确认调整成功:

Kubernetes之Deployment

3、执行滚动更新

将Nginx版本从1.14.2更新到1.9.1:

kubectl set image deployment/nginx-deploy nginx=nginx:1.9.1 –record

查看更新状态:

kubectl rollout status deployment nginx-deploy

查看更新过程中的详细信息:

Kubernetes之Deployment

分析日志:

Kubernetes之Deployment

分析更新过程日志:

1、Deployment创建一个新的ReplicaSet (nginx-deploy-754898b577)。

2、新ReplicaSet的副本数逐步增加到3。

3、旧ReplicaSet (nginx-deploy-78d8bf4fd7)的副本数逐步减少到0。

4、整个过程中保持总副本数不变,确保服务不中断。

查看更新后的ReplicaSet状态:

Kubernetes之Deployment

四、版本回滚

1、查看历史版本

kubectl rollout history deployment nginx-deploy

2、查看特定版本详情

kubectl rollout history deployment nginx-deploy –revision=2

3、回滚到上一个版本

kubectl rollout undo deployment nginx-deploy

4、回滚到指定版本

kubectl rollout undo deployment nginx-deploy –to-revision=2

5、调整历史版本保留数量

通过设置.spec.revisionHistoryLimit参数控制保留的历史版本数量(默认为10):

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
revisionHistoryLimit: 5 # 保留5个历史版本
# 其他配置…

五、扩缩容与更新控制

1、扩缩容操作

直接使用命令行调整副本数量:

kubectl scale deployment nginx-deploy –replicas=5

2、更新暂停与恢复

在进行复杂配置变更时,可以暂停更新过程:

kubectl rollout pause deployment nginx-deploy

完成多次配置修改后,恢复更新过程:

kubectl rollout resume deployment nginx-deploy

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。