如果要在原生的 Kubernetes 上部署 Serverless 应用可能会怎么做?
首先需要一个 Deployment 来管理 Workload,还需要通过 Service 对外暴露服务 和实现服务发现的能力。应用有重大变更,新版本发布时可能需要暂停观察,待观察确认没 问题之后再继续增加灰度的比例。这时就要使用两个 Deployment 才能做到。 v1 Deployment 代表旧版本,灰度的时候逐一减少实例数;v2 Deployment 代表 新版本,灰度的时候逐一增加实例数。hpa 代表弹性能力,每一个 Deployment 都有一 个 hpa 管理弹性配置。 这其中其实是有冲突的:假设 v1 Deploymen 原本有三个 pod,灰度的时候升级一 个 pod 到 v2,此时其实是 1/3 的流量会打到 v2 版本上。但当业务高峰到来后,因为 两个版本都配置了 hpa,所以 v2 和 v1 会同时扩容,最终 v1 和 v2 的 pod 数量就不 是最初设置的 1/3 的比例了。 所以传统的这种按照 Deployment 实例数发布的灰度策略和弹性配置天然是冲突的。 而如果按照流量比例进行灰度就不会有这个问题,这可能就要引入 Istio 的能力。引入 Istio 作为 Gateway 组件,Istio 除了管理同一个应用的流量灰度,还能对不同 的应用进行流量管理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。