毕业论文
您现在的位置: 版本控制 >> 版本控制资源 >> 正文 >> 正文

Kubernetes的高级部署策略集

来源:版本控制 时间:2022/10/26

译者:陈峻

在现代化应用技术领域中,容器编排平台简化了针对基于微服务应用的基础架构配置,并通过模块化实现了高效的工作负载的管理。而作为一个被广泛采用的、能够支持多种部署资源的平台,Kubernetes更是方便了企业大规模地以CI/CD管道的方式,部署和管理各类应用程序。虽然Kubernetes提供了滚动更新(rollingupdates)作为默认的部署策略,但是某些用例则需要使用非常规的方法,来部署或更新集群中的各项服务。下面,我们将在回顾Kubernetes基本部署概念的基础上,深入探讨各种高级的Kubernetes部署策略、它们的优缺点、及其用例。

Kubernetes的部署概念

在部署过程中,集群管理员可以自定义应用程序的生命周期,以及执行更新的方式。而Kubernetes通常会使用部署资源,并以声明的方式去更新各类应用程序。它的这种自动化部署方式,实现并维护了各个集群对象及应用程序的所需状态。而且,其后端无需人工干预,即可以一种安全且可重复的方式,来执行应用程序的更新。也就是说,Kubernetes的部署可以协助集群管理员实现:

部署单个pod或副本集

更新一组pod或副本集

回滚到早期的版本

暂停或继续部署

扩展各种部署

下面,我们将探讨Kubernetes是如何简化容器化应用的更新过程,以及它将如何应对持续交付的挑战。

Kubernetes对象

虽然Kubernetes可以利用许多种工作负载资源对象,作为持久实体,去管理集群的状态,但KubernetesAPI通常会使用Deployment(部署)、ReplicaSet(副本集)、StatefulSet(有状态集)和DaemonSet(守护程序集)四种资源,对应用程序进行声明式更新。下面我们来具体看看这四种资源的特点:

Deployment

作为一种Kubernetes资源,Deployment可用于定义和识别应用程序所需的状态。集群管理员在Deployment的YAML文件中通过描述预期的状态,以便部署控制器,并据此将实际状态逐渐更改为预期的状态。而为了确保高可用性,部署控制器还会通过持续监控,按需将健康的集群节点和pod,去替换那些失败的集群节点和pod。

ReplicaSet

ReplicaSet可用于维护特定数量的pod,以确保其高可用性。ReplicaSet的清单文件会包括如下字段:

用于识别隶属于某个集合的pod选择器

通过副本数,来表示集合中应该有多少个pod

通过一个pod模板,来显示新的pod应创建哪些数据,以满足副本集的标准

StatefulSet

StatefulSet对象可以管理某个有状态的应用程序中的pod部署与扩展。该资源会基于相同的容器规范,去管理pod,并确保整组pod的唯一性、以及排列有序。StatefulSet的持久性pod标识符,能够方便集群管理员将其工作负载连接到具有高可用性的持久性存储卷上。

DaemonSet

DaemonSet通过确保一组节点运行在某个pod的副本上,来协助维护应用程序的部署。DaemonSet资源主要被用于管理各种代理的部署和生命周期中,例如:

每个节点上的各个集群存储代理

日志收集的守护进程

节点监控的守护进程

使用部署更新

Kubernetes的部署提供了一种可预测的方法,来启动和停止pod。有了这些资源,我们可以轻松地实施部署、回滚更改、以及以自主迭代式管理软件的发布周期。目前,Kubernetes通过提供各种部署策略,来实现更小、更频繁的更新,并为应用提供如下优势:

通过更快的客户反馈,以获得更好的功能性优化

缩短面市时间

提高DevOps团队的生产力

默认情况下,由Kubernetes提供的滚动式更新,可作为其标准的部署策略,实现一次性将新的版本去替换某个旧的pod,以避免集群的停机。此外,根据功能性的目标和类型的不同,Kubernetes还支持包括蓝绿、金丝雀和A/B部署在内,各种高级部署策略。下面,让我们来详细讨论这些策略的特点,及其优缺点。

Kubernetes部署的高级策略

部署配置与路由功能的结合使用,能够方便发布团队在提交完整版本之前,在实时的生产环境中,测试新功能的有效性。为此,开发人员可以利用Kubernetes所支持的高级部署策略,来精确地控制特定版本的质量。当然,具体应当采取何种Kubernetes的部署方式,去发布应用程序的更新和新功能,则取决于实际用例和工作负载。

蓝绿部署

在蓝绿策略中,应用程序的新旧实例会被同时部署。在用户可以持续访问现有版本(蓝色)的同时,具有相同数量的新版本(绿色)实例可供站点可靠性工程师(sitereliabilityengineering,SRE)和QA团队使用。一旦QA团队确认了绿色版本已通过所有测试要求,用户就会被重定向到新的版本上。这往往是通过更新负载均衡服务上selector字段中的version标签来实现的。通常,当开发人员想要避免出现版本控制问题时,蓝绿部署就非常适用。

使用蓝绿部署策略

让我们假设某个应用程序的第一个版为v1.0.0,而可用的第二个版是v2.0.0。那么如下代码段便是指向第一个版本的服务:

复制

apiVersion:v1kind:Servicemetadata:name:darwin-service-aspec:type:LoadBalancerselector:app:nginxversion:v1.0.0ports:-name:

转载请注明:http://www.0431gb208.com/sjslczl/2204.html