关于服务网格

服务网格是应用程序中的基础结构层,用于促进服务之间的通信。 服务网格为工作负荷提供流量管理、复原能力、策略、安全性、强标识和可观测性等功能。 应用程序与这些操作功能相分离,服务网格将这些功能移出应用层并移到基础结构层。

方案

使用服务网格时,可以启用以下方案:

  • 加密群集中的所有流量:在群集中的指定服务之间启用相互 TLS。 这可以扩展到外围网络中的入口和出口,为应用程序代码和基础结构提供安全的默认选项,且无需进行任何更改。

  • Canary 和分阶段推出:指定将一部分流量路由到群集中的一组新服务所要满足的条件。 成功测试 Canary 发布后,删除条件性路由,并分阶段逐渐增加路由到新服务的所有流量的百分比。 最终,所有流量都会定向到新服务。

  • 流量管理和操作:针对服务创建一个策略,用于限制将所有流量从特定来源路由到某个服务版本的速率,或创建一个策略,用于对指定服务之间的故障类应用重试策略。 在迁移或调试问题期间将实时流量镜像到新的服务版本。 在测试环境中的服务之间注入故障以测试复原能力。

  • 可观测性:了解服务的连接方式以及在服务之间流动的流量。 收集群集中所有流量(包括流入量/流出量)的指标、日志和跟踪。 将分布式跟踪功能添加到应用程序。

选择条件

在选择服务网格之前,请确保了解安装服务网格的要求和理由。 提出下列问题:

  • 入口控制器是否足以满足我的需求?:有时,在入口位置使用 A/B 测试或流量拆分等功能就足以支持所需的方案。 不要无谓地增大环境的复杂性。

  • 我的工作负载和环境能否容忍额外的开销?:支持服务网格所需的所有组件都需要 CPU 和内存等资源。 所有代理及其关联的策略检查会增大流量延迟。 如果工作负载对延迟非常敏感,或者无法提供额外的资源来涵盖服务网格组件,则应重新考虑使用服务网格。

  • 这是否增加了不必要的复杂性?:如果要安装服务网格以使用对业务或运营团队不重要的功能,请考虑增加安装、维护和配置的复杂性是否值得。

  • 是否能够以递进的方式采用此服务网格?:某些提供多种功能的服务网格能够以更递进的方式采用。 安装所需的组件即可确保成功。 如果以后发现需要更多功能,请稍后浏览它们。 避免从一开始就迫不急待地安装所有组件。

后续步骤

Open Service Mesh (OSM) 是运行 Azure Kubernetes 服务 (AKS) 的受支持服务网格:

此外,还有由开源项目和第三方提供的服务网格,这些服务网格通常与 AKS 结合使用。 AKS 支持策略不涵盖这些服务网格。

有关服务网格环境的更多详细信息,请参阅第 5 层服务网格环境

有关服务网格标准化工作的更多详细信息,请参阅: