Kubernetes 是现代技术领域广泛使用的平台,可帮助企业大规模部署和管理应用程序。容器编排平台简化了基于微服务的应用程序的基础设施配置,通过模块化支持有效的工作负载管理。Kubernetes 使各种部署资源能够使用更新和版本控制构建CI/CD 管道。尽管滚动更新是 Kubernetes 中的默认部署策略,但某些用例需要一种交付或更新集群服务的新方法。
当需要将生产就绪的容器化应用部署到
基础架构中时,选择部署策略是必不可少的。有三个选项可供您选择:滚动(默认)、金丝雀发布和蓝/绿部署。开发人员经常使用这些部署技术在生产环境中顺利安全地实施新的代码修改。此外,使用Kubernetes 自动扩展可以轻松部署应用程序的新版本。
什么是 Kubernetes 部署策略?
什么是 Kubernetes 部署策略
在 Kubernetes 中,部署是一个资源对象,它指定程序的最终状态。部署是声明性的;因此,我们不会指定状态应如何实现它们。相反,我们定义所需状态,然后让部署控制器从那里接管,自动并尽其所能地完成任务。使用 Kubernetes 部署工具,我们可以指定应用程序的生命周期,包括要使用的映像、应存在的 Pod 数量以及应如何更新它们。
使用自动化 Kubernetes 部署策略,您可以声明式地创建 Pod 和副本集。指定所需状态后,自动化 Kubernetes 部署控制器会持续检查相关资源的状态并部署 Pod 以匹配预期状态。这对于 Kubernetes 自动扩展至关重要。
k8s 部署策略指定如何开发、
升级或降级各种 Kubernetes 基础架构应用程序版本。在传统软件环境中,应用程序部署或升级会导致服务中断和停机。但是,您可以使用Kubernetes集成来避免这种情况,它提供了多种部署技术,使您能够升级大量应用程序实例,同时避免或最大限度地减少停机时间。
您选择的 Kubernetes 自动扩展部署方法将决定在将应用程序部署到 K8s 集群时如何将其从较早版本更新到较新版本。除了引入测试原则和启用用户分析之外,一些解决方案还包括停机时间。经常采用两种主要的 K8s 部署方法:重新创建和滚动。
应用程序由Kubernetes 服务使用 k8s 部署资源以声明方式更新。集群管理员指定应用程序的生命周期以及如何通过部署执行相关更新。Kubernetes 集成部署为集群对象和应用程序提供了一种自动化方法,以达到并保持预期状态。此外,可以使用 Kubernetes 后端以可重复且安全的方式更新应用程序,这会自动自动化 Kubernetes 部署工具流程。
通过 Kubernetes 部署,集群管理员可以:
设置副本集或 pod。
维护 pod 和副本集。
恢复到以前的版本。
暂停或继续时部署。
大规模部署。
有用的链接: 通过 Terraform 和 AWS EKS 管理 Kubernetes 应用程序
最佳 Kubernetes 部署策略
最佳 Kubernetes 部署策略
我们将回顾几种 Kubernetes 部署策略。重要的是要了解 Kubernetes Deployment 对象默认仅支持 Recreate 和 Rolling 部署。
可以在 Kubernetes 编排中执行蓝绿或其他形式的部署,但这需要定制或特定的工具。
1)重新创建部署
重新创建部署技术是一种全有或全无的方法,可以让您在停机时间内立即更新应用程序。
使用此技术,
可以终止部署的当前 Pod,并安装新版本。此外,在旧版本被关闭和新 Pod 成功启动并响应用户查询之间会有停机时间。
重新创建技术适用于开发环境,或者当用户希望在长时间内出现性能不佳或故障(可能在滚动部署中发生)时短暂停机。更新越重要,滚动更新出现问题的可能性就越大。
重新创建部署还适用于以下其他场景:
可以将维护工作安排在非高峰时段(例如,对于仅在工作时间访问的应用程序,安排在周末)。
由于技术限制,无法运行同一软件的两个实例。您可以停止使用旧版本,然后通过重新创建部署来启动新版本。
2)滚动部署
滚动部署方法将应用程序实例升级到新版本。目标环境的节点将以预先指定的批次逐步更新到新版本。因此,滚动部署需要两个版本的服务:一个用于 Kubernetes 应用程序的旧版本,另一个用于较新的版本。
滚动部署的优点是实施起来更简单,更容易回头,而且比整体部署危险性更小。
它可能很慢;如果出现问题,没有简单的方法可以恢复到以前的版本。此外,它还意味着应用程序的多个并行版本可能同时运行。因此,您可能被迫使用重建方法处理旧版应用程序。
高级数据的使用扩展到人工智能和机器学习,它们可以自动进行数据分析并以前所未有的规模发现见解。这些技术不仅提高了效率,而且还允 手机号码列表 许实时决策,这远远优于依赖静态数据分析的传统方法。例如,在医疗保健领域,机器学习算法可以分析患者数据以推荐个性化治疗方案,从而改善患者的治疗效果。
3)影子部署
影子部署是一种不同的金丝雀部署,您可以使用生产系统中的工作负载测试新版本。影子部署无需最终用户的干预,即可在现有版本和新版本之间 如何在线销售护发产品:启动您的直销业务 分配流量。一旦新版本的稳定性和性能满足预定标准,操作员就会开始全面部署。
影子部署的优点是可以测试新版本的非功能性特性,例如稳定性和性能。然而,影子部署的缺点是维护起来很困难,并且使用的资源是传统部署的两倍。
有用的链接: 如何优化 Kubernetes Autoscaler 以改善业务
4)蓝绿部署
使用蓝/绿(或红/黑)部署方法,您可以部署新版本而 真实手机号码列表 不会出现停机。绿色表示应用程序的新版本,而蓝色表示现有版本。
使用此方法,一个版本始终处于活动状态。在创建和测试绿色部署时,流量将路由到蓝色部署。测试过程完成后,您开始将流量引导到新版本。蓝色部署可以停用或保留以备将来逆转。
蓝/绿部署可节省停机时间并降低风险,因为如果在部署新版本期间出现问题,您可以回滚到以前的版本。此外,由于完整的 Kubernetes 应用程序状态在单个部署中发生更改,因此还可以避免版本控制问题。
不幸的是,这种策略成本高昂,需要为两次部署投入双倍的资源。它还需要一种方法来快速将流量从蓝色版本更改为绿色版本并转回。
5)A/B 测试
Kubernetes 编排环境中的
A/B 测试是指根据特定标准将流量路由到应用程序的各个版本的金丝雀部署。例如,A/B 测试可以根据 Cookie、用户代理或其他参数定位特定用户,这与根据流量权重路由用户的标准金丝雀部署不同。
Kubernetes 中的 A/B 测试有助于在将新功能分发给所有用户之前确定客户喜欢哪个版本的新功能。
6)金丝雀部署
金丝雀部署方法允许您在全面推出之前与实际用户一起测试新应用程序版本。启动分阶段部署需要采用渐进式交付方法。金丝雀部署策略涵盖多种部署方法,例如 A/B 测试和暗发布。
金丝雀技术通常涉及逐步将新应用程序版本部署到 Kubernetes 自动扩缩集群,同时使用有限的实际流量对其进行测试。所有其他用户都可以使用的先前版本允许您在一小群活跃用户上测试重大升级或实验性功能。
金丝雀部署需要使用两个几乎相同的 ReplicaSet,一个用于向一小部分用户推出新功能,另一个用于所有活跃用户。一旦您有了更多的信心,就可以逐步将新版本推送到整个基础设施。但是,在金丝雀版本成为新的生产版本之前,所有实时流量都将定向到金丝雀。
与蓝绿部署类似,
有两个缺点:可以同时运行多个版本的 Kubernetes 应用程序和可以将部分请求路由到新版本的巧妙的流量系统。
有用链接: Kubernetes 的采用:主要驱动因素和挑战
结论
该技术的基本功能包括 Kubernetes 对象,可快速交付应用程序功能和更新。因此,Kubernetes 管理员可以设置高效的版本控制系统来管理发布,同时使用部署资源保证应用程序停机时间最短。此外,管理员可以扩展基础设施以适应不断增加的工作负载,或使用部署回滚到以前的 pod 版本。
管理员可以使用复杂的
Kubernetes 部署策略将流量和请求导向特定版本,从而促进实时测试和错误处理。在管理员和开发人员提交更改之前,这些技术可确保新功能按预期运行。
尽管部署资源是持久应用程序状态的基石,但始终建议在选择最佳部署策略、创建良好的回滚选项以及考虑生态系统的动态特性(这取决于众多松散耦合的服务)时仔细考虑。这就是 Veritis 的作用所在。
史蒂夫奖得主Veritis拥有为 Kubernetes 服务创建出色解决方案的专业知识。请联系我们,告诉我们您对 Kubernetes 部署策略的要求和经验。