滚动发布抽象~Deployment原理剖析

本文详细介绍了Kubernetes中的滚动发布策略RollingUpdate,对比了蓝绿发布,并通过PetClinic应用的Deployment和Service发布实例,展示了如何进行版本更新、回滚以及发布历史查看。整个过程确保了应用的平滑升级和服务不中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.何谓滚动发布Rolling Update

一种高级发布策略,按批次依次替换老版本,逐步升级到新版本。发布过程中,应用不中断,用户体验平滑。
在这里插入图片描述

2.蓝绿 vs 滚动发布

在这里插入图片描述

3.K8s发布抽象Deployment

Deployment可以理解为是一种滚动发布方式,它是在ReplicaSet基础上进行了一次包装
在这里插入图片描述

4.Deployment滚动发布

假设ReplicaSet v1.0.0对应的3个pod已经发布,然后通过Deployment进行滚动发布,升级至v1.0.1,这个过程中等到蓝色部分的pod逐步上线之后,对应的绿色pod会慢慢消失,当然Deployment始终会保证有Pod在运行,服务不中断,另外前置的Service抽象会屏蔽掉内部Pod具体的变化,让Client端对整个发布无感知,如果蓝色Pod有问题,健康检查不通过,这时Deployment会终止本次更新,Deployment抽象的引入,把滚动发布机制给封装与自动化了
在这里插入图片描述

5.Deployment发布规范样例

官方地址:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
在这里插入图片描述

6.PetClinic的Deployment发布规范

在这里插入图片描述

7.PetClinic的Service发布规范

在这里插入图片描述

8.发布PetClinic Deployment和Service

[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/07/petclinic-dp.yaml
deployment.apps/petclinic created
[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/07/petclinic-svc.yaml
service/petclinic created

在这里插入图片描述

9.校验PetClinic应用V1.0.0

在这里插入图片描述

10.更新PetClinic的Deployment发布规范

在这里插入图片描述

11.滚动发布PetClinic V1.0.1

[root@k8s7-22.host.com ~]# kubectl apply -f http://k8s-yaml.od.com/k8s-msa-in-action/ch05/07/petclinic-dp.yaml
deployment.apps/petclinic configured

12.滚动发布结束

在这里插入图片描述

13.查看发布历史

在这里插入图片描述

14.校验PetClinic应用V1.0.1

在这里插入图片描述

15.回滚发布

在这里插入图片描述

16.校验PetClinic应用回退到V1.0.0

在这里插入图片描述

17.指定回退版本

在这里插入图片描述
浏览器访问验证是否已更新至v1.0.1

18.总结

在这里插入图片描述

Kubernetes(简称K8s)是一个开源的容器编排平台,主要用于自动化部署、扩展和管理容器化应用程序。它提供了一种通用的方法来管理分布式系统,并提供了跨多个主机的容器的自动化部署、弹性伸缩、负载均衡和自动故障恢复等功能。 在深入剖析Kubernetes之前,我们先了解一些关键概念: 1. Pod:是Kubernetes调度的最小单位,可以包含一个或多个容器。这些容器在同一个Pod中共享网络和存储资源。 2. Node:是Kubernetes集群的工作节点,可以是物理机或虚拟机。Node上运行着Kubernetes的各个组件,并用于运行Pod。 3. Deployment:用于定义应用程序的部署方式,包括Pod的副本数量、更新策略等。 4. Service:提供了一种访问Pod的方式,可以通过Service的IP和端口访问Pod。 5. Namespace:用于在集群中创建虚拟的资源分组,使不同的团队或项目能够隔离使用集群资源。 6. Label和Selector:Label是键值对,用于标识资源,而Selector则用于根据Label选择相应的资源。 Kubernetes内部有多个核心组件,包括: 1. kube-apiserver:提供Kubernetes API,用于管理集群的各种操作和资源。 2. kube-controller-manager:包含多个控制器,用于监控集群状态并进行自动化管理,例如副本数量调整、滚动更新等。 3. kube-scheduler:负责为新创建的Pod选择合适的Node进行调度,并考虑资源约束和亲和性策略等。 4. kubelet:运行在每个Node上,负责管理Pod的生命周期,包括容器的创建、启动和停止等。 5. kube-proxy:负责为Service提供网络代理和负载均衡功能。 Kubernetes通过使用这些组件实现了容器的自动化部署和管理。它具有高可用性、弹性伸缩、自动故障恢复等特性,可以轻松管理大规模的容器化应用程序。同时,Kubernetes还提供了丰富的扩展机制和插件生态系统,可以满足不同场景下的需求。 总结来说,Kubernetes是一个强大的容器编排平台,通过抽象和自动化的方式简化了容器化应用程序的部署和管理。它在云原生应用开发和运维中扮演着重要角色,帮助用户实现高效、可靠和可扩展的容器化部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寻花之梦~~

谢谢老板的支持和鼓励!

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

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

打赏作者

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

抵扣说明:

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

余额充值