Kubernetes部署策略介绍

880 阅读4分钟
Knoldus博客音频

阅读时间: 3 分钟

Kubernetes提供了部署资源,它告诉Kubernetes应用程序的理想状态。
部署是声明性的,这意味着他们有什么要实现而不是如何实现。为了实现这种期望的状态,在引擎盖下,部署使用ReplicaSets,它进一步维护所需的pods集。

部署中的更新

使用部署,我们可以在K8s集群中实现应用程序的理想状态,但如果我们必须更新应用程序的版本,怎么办?
在这种情况下,K8s的部署有助于更新应用程序。如果没有部署,我们必须通过创建新版本的pod和删除旧版本的pod来手动更新应用程序,然后检查每件事情是否按预期工作。
部署使整个过程自动化,我们可以简单地更新所需状态的pod模板,然后把它交给K8s,在后台它将做所有必要的动作来满足新的所需状态。
如果你想回到以前的配置,你也可以轻松回到以前的部署所需状态。

部署策略

K8s部署有不同类型的策略来更新部署。每种策略在如何实现新的理想状态方面都有不同的方法。

  • 滚动更新
  • 重新创建
  • 金丝雀
  • 蓝色/绿色

滚动更新

滚动更新策略是Kubernetes使用的默认策略。
在这个部署策略中,当pod启动和运行时,会创建一个带有新版本的pod,然后将旧版本pod的连接指向新版本,逐渐替换所有旧版本的pod,更新部署。

Rolling Update Deployment StrategyRolling Update Deployment Strategy

优点

  • 实施简单
  • 版本推出之间没有停机时间
  • 易于推出/回滚
  • 方便有状态的应用,可以处理数据的再平衡

缺点

  • 滚动/回滚需要时间
  • 对流量没有控制

重新创建

重新创建策略,是一个全有或全无的过程。所有以前的版本的豆荚被删除,新版本的豆荚被重新创建。

Recreate Deployment StrategyRecreate Deployment Strategy

优点

  • 容易实现。
  • 应用状态完全被更新。

缺点

  • 有一个停机时间,这取决于应用程序的关闭和启动。

金丝雀

金丝雀部署是一种部署策略,它将应用程序或服务增量地发布给一个子集的用户。与其他所有的部署策略相比,金丝雀发布是风险最低的,因为有这种控制。

Canary Deployment StrategyCanary Deployment Strategy

优点

  • 为一个子集的用户发布版本
  • 方便错误率和性能监控
  • 快速回滚

缺点

  • 展开速度慢
  • 微调流量分布可能很昂贵(99%A/1%B=99个豆荚A,1个豆荚B),可能需要使用额外的工具,如Istio和Linkerd。

蓝/绿

蓝绿部署是一种部署策略,利用两个相同的环境,一个是 "蓝"(又称中转)环境,一个是 "绿"(又称生产)环境,有不同版本的应用程序或服务。
两者同时部署,在测试较新的版本后,扮演负载均衡器角色的K8s服务被更新,将流量发送到较新的版本。

Blue/Green Deployment StrategyBlue/Green Deployment Strategy

优点

  • 即时推出/回滚
  • 避免版本问题,一次性改变整个集群的状态。

缺点

  • 需要双倍的资源
  • 在发布到生产之前,应该对整个平台进行适当的测试
  • 处理有状态的应用程序可能比较困难

总结一下

有不同的方法来部署一个应用程序,当发布到开发/暂存环境时,重新创建或滚动更新部署通常是一个很好的选择。
当涉及到生产和没有停机时间时,选择滚动更新或蓝/绿是一个很好的选择。
如果稳定性不能保证,可能影响发布,那么选择金丝雀是一个很好的选择。这样,消费者将自己测试应用程序。
这取决于我们想如何使用部署,以及我们希望它是怎样的。

参考资料

分享Knol。

相关信息