当前位置: 首页 > news >正文

使用Deployment部署运行Nginx和Apache服务

1.Deployment简介

在Kubernetes(k8s)中,Deployment 是一种核心控制器资源,用于管理无状态应用的声明式部署、扩展与更新。它通过定义应用的期望状态,由控制器自动维护实际状态与期望状态的一致性,是容器化应用管理的核心工具。

常用的内置工作负载资源类型。

资源类型

功能

Deployment

管理集群中的无状态应用程序,如Web服务

StatefulSet

管理集群中的有状态应用程序,如MongoDB

DaemonSet

管理集群中的守护进程集,确保所有节点运行同一个Pod,如日志收集组件

Job

运行一次性任务

CronJob

运行周期性任务

 Deployment通过管理ReplicaSet实现Pod的副本控制。用户定义Deployment后,控制器会创建对应的ReplicaSet,并由ReplicaSet负责Pod的创建、删除与监控。当用户更新Deployment时,控制器会创建新的ReplicaSet并逐步迁移流量,最终替换旧版本。

Deployment的核心功能包括:

1. 声明式部署:

用户通过YAML文件定义应用的期望状态(如副本数、镜像版本、资源限制等),Deployment控制器负责创建或更新资源以匹配定义。

2.滚动更新:

支持零停机更新策略,通过逐步替换旧版本Pod实现平滑升级。用户可配置更新参数(如最大不可用Pod数、最大新增Pod数)以控制更新速度。

3.版本回滚:

自动记录每次更新的修订历史,用户可快速回滚到任意历史版本,确保应用稳定性。

4.自动扩缩容:

根据负载动态调整Pod副本数,支持手动设置或结合HPA(Horizontal Pod Autoscaler)实现自动扩展。

5.高可用性保障:

监控Pod状态,当Pod异常终止时自动重启或重建,确保应用持续可用。

2.实验基础和前置条件:

本实验以Kubernetes集群环境搭建与初始化_kubernetes 集群初始化 master 节点-CSDN博客为基础和前置条件。

3.使用Deployment进行nginx应用的部署、更新、回滚和缩扩容:

本部分我们将使用Deployment进行nginx应用的部署、更新和回滚。

3.1部署Deployment:

3.1.1创建定义Deployment的配置文件:

创建定义Deployment的配置文件nginx-deploy.yaml。

3.1.2 基于配置文件创建Deployment:

基于上述配置文件nginx-deploy.yaml创建Deployment对象。

kubectl apply -f ch04/nginx-deploy.yaml

3.1.3 检查该Deployment对象的状态:

执行以下命令检查该Deployment对象的状态的信息。

kubectl get deployments -o wide

3.1.4 检查Deployment对象的当前部署状态:

执行以下命令检查该Deployment对象的当前部署状态。

kubectl rollout status deployment/nginx-deploy

3.1.5查看Deployment创建的ReplicaSet对象:

删除我们创建的ReplicaSet对象。

kubectl get rs

3.1.6 查看Deployment所创建的Pod对象:

执行以下命令,查看我们Deployment所创建的Pod对象。

kubectl get pod -o wide

3.1.7 查看Deployment部署对象的详细:

执行以下命令,查看我们Deployment部署对象的详细信息。

kubectl describe deployment nginx-deploy

3.1.8 访问Nginx应用程序进行实际测试:

curl http://10.244.140.97
curl http://10.244.140.96
curl http://10.244.196.147

或者在master01主机、node01主机、node02主机中直接通过浏览器进行访问。

3.2.1 更新Deployment:

1.执行以下命令,将Nginx服务器的Pod所使用的镜像升级为nginx:1.16.1。

 kubectl set image deployment.v1.apps/nginx-deploy nginx=nginx:1.16.1

2.执行以下命令,查看该Deployment对象的更新状态(过程)。

kubectl rollout status deployment/nginx-deploy

3. 查看Deployment对象创建的ReplicaSet对象

执行以下命令,查看我们创建的ReplicaSet对象。

kubectl get rs

4. 执行以下命令,查看Deployment资源更新之后新创建的Pod对象。

kubectl get pod -o wide

 5.执行以下命令,查看我们Deployment部署对象的详细信息。

kubectl describe deployment nginx-deploy

 

我们可以看到新老ReplicaSet对象的扩容和缩容日志。

3.3.1 回滚Deployment更新:

1.使用以下命令,检查Deployment修订历史。

kubectl rollout history deployment/nginx-deploy

2. 使用以下命令,查看指定修订版本的详细信息(--revision选项指定版本号)。

kubectl rollout history deployment/nginx-deploy --revision=2

3. 执行以下命令,回滚到以前的版本,这里是版本1。

kubectl rollout undo deployment/nginx-deploy --to-revision=1

4. 执行以下命令,查看我们Deployment部署对象的详细信息。

kubectl describe deployment nginx-deploy

 

5. 执行以下命令,查看Deployment资源更新之后新创建的Pod对象。

kubectl get pod -o wide

3.4.1 暂停、恢复Deployment的更新:

1.执行以下命令暂停Deployment更新。

kubectl rollout pause deployment/nginx-deploy

2. 执行以下命令,查看Deployment资源的ReplicaSet对象。

kubectl get rs

3. 执行以下命令,尝试更新Deployment的镜像。

kubectl set image deployment/nginx-deploy nginx=nginx:1.17.1

4. 执行以下命令,再次查看Deployment的ReplicaSet对象。

kubectl get rs

5. 执行以下命令,恢复已暂停的Deployment更新。

kubectl rollout resume deployment/nginx-deploy

6. 执行以下命令,再次查看Deployment的ReplicaSet对象。

kubectl get rs -o wide

7. 执行以下命令,查看我们Deployment部署对象的详细信息。

kubectl describe deployment nginx-deploy

3.5.1 扩缩容Deployment:

1.执行以下命令,将Deployment的Pod副本数扩容到5个。

kubectl scale deployment/nginx-deploy --replicas=5

通过kubectl scale命令,我可以对Deployment部署直接进行扩缩容,其中--raplicas选项指定要达到的Pod副本数。

2. 检查该Deployment对象的状态。

执行以下命令检查该Deployment对象的状态信息。

kubectl get deployments -o wide

3. 执行以下命令,进一步检查Pod的状态。

kubectl get pod -o wide

nginx-deploy部署已经有了5个Pod副本。

另外,修改YAML配置文件里的.spec.replicas字段值,再执行kubectl apply命令实现Pod副本数的动态调整。

4.使用Deployment进行Apache应用的部署、更新和缩扩容:

4.1部署Deployment:

4.1.1创建定义Deployment的配置文件:

创建定义Deployment的配置文件httpd-deploy.yaml。

4.1.2 基于配置文件创建Apache:

基于上述配置文件httpd-deploy.yaml创建Deployment对象,具体命令如下所示。

kubectl apply -f ch04/httpd-deploy.yaml

4.1.3 检查该Deployment对象的状态:

执行以下命令检查该Deployment对象的状态的信息。

kubectl get deployments -o wide

4.1.4执行以下命令,进一步检查Pod的状态:

kubectl get pod -o wide

4.2 更新Deployment:

4.2.1执行以下命令,将Apache服务器的Pod所使用的镜像升级为httpd:2.4.46。

kubectl set image deployment.v1.apps/httpd-deploy httpd=httpd:2.4.46

4.2.2 执行命令,查看Deployment的ReplicaSet对象:

具体命令,请参考本实验前文。

4.2.3执行命令,查看Deployment对象的状态信息:

具体命令,请参考本实验前文。

4.2.4执行命令,进一步检查Pod的状态:

具体命令,请参考本实验前文。

4.2.5执行以下命令,查看我们Deployment部署对象的详细信息:

具体命令,请参考本实验前文。

4.3 回滚Deployment更新:

4.3.1使用kubectl rollout命令将当前Aapche的Deployment更新回滚到前一个更新:

4.3.2执行命令,查看Deployment的ReplicaSet对象:

具体命令,请参考本实验前文。

4.3.3执行命令,查看Deployment对象的状态信息:

具体命令,请参考本实验前文。

4.3.4执行命令,进一步检查Pod的状态:

具体命令,请参考本实验前文。

4.3.5执行以下命令,查看我们Deployment部署对象的详细信息:

具体命令,请参考本实验前文。

4.4 扩容Deployment副本:

4.4.1将Deployment扩容到 5 个副本:

4.4.2执行命令,查看Deployment的ReplicaSet对象:

具体命令,请参考本实验前文。

4.4.3执行命令,查看Deployment对象的状态信息:

具体命令,请参考本实验前文。

4.4.4执行命令,进一步检查Pod的状态:

具体命令,请参考本实验前文。

4.4.5执行以下命令,查看我们Deployment部署对象的详细信息:

具体命令,请参考本实验前文。

4.5 缩容Deployment副本:

4.5.1将Deployment缩容到 2 个副本:

4.5.2执行命令,查看Deployment的ReplicaSet对象:

具体命令,请参考本实验前文。

4.5.3执行命令,查看Deployment对象的状态信息:

具体命令,请参考本实验前文。

4.5.4执行命令,进一步检查Pod的状态:

具体命令,请参考本实验前文。

4.5.5执行以下命令,查看我们Deployment部署对象的详细信息:

具体命令,请参考本实验前文。

 

本实验到此结束! 

相关文章:

  • Missashe考研日记-day35
  • 【本地搭建npm私服】使用Verdaccio
  • 晶振:智能设备的“心跳”如何支撑5G与航天
  • 【前端】webstorm运行程序浏览器报network error
  • Python基于Django和MySQL实现突发公共卫生事件舆情分析系统(有大屏功能)
  • 经典题型05
  • LeetCode[226] 翻转二叉树
  • 经验:从CAN到以太网为主的车载网络架构升级
  • 如何用分布式防御抵扣大规模DDoS攻击?
  • uniapp + vue3 + 京东Nut动作面板组件:实现登录弹框组件(含代码、案例、小程序截图)
  • C++错误: multiple definition of `Q‘
  • Matlab B级路面激励下集中驱动、轮边驱动和主动减振车辆
  • css3伸缩盒模型第三章(伸缩相关)
  • JWT深度解析:现代Web身份验证的通行证-优雅草卓伊凡
  • 基于FPGA婴儿安全监护系统(蓝牙小程序监测)
  • python小说网站管理系统-小说阅读系统
  • 深入解析asyncio的实现与应用
  • 在模 p 运算中,将负数 x 转换为对应的正数,执行 (x % p + p) % p 操作即可。
  • 大模型调优方法与注意事项
  • 基于springboot+vue的校园部门资料管理系统
  • 习近平出席俄罗斯总统举行的欢迎仪式
  • 咖啡戏剧节举办第五年,上生新所“无店不咖啡,空间皆可戏”
  • 现场|万米云端,遇见上博
  • 公积金利率降至历史最低!多项房地产利好政策落地,购房者置业成本又降了
  • 有人悬赏十万寻找“全国仅剩1只”的斑鳖,发帖者回应并证实
  • 马上评|从一个细节看今年五一档电影