12.1 服务网格的未来

服务网格作为一个改善服务到服务通信的专用基础设施层,是云原生范畴中最热门的话题。随着容器愈加流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助我们管理网络流量。服务网格试图为无规则的复杂的容器问题提供规范化的解决方案。

服务网格也可以用于混沌工程——“一门在分布式系统上进行实验的学科,目的是构建能够应对极端条件的可靠系统”。服务网格能够将延迟和错误注入到环境中,而不需要在每个主机上安装一个守护进程。

容器是云原生应用的基石,通过应用容器化,使得应用开发部署更加敏捷、迁移更加灵活,并且这些实现都是基于标准化的。而容器编排则是更近一步,能够更加有效地编排资源,更加高效地调度利用这些资源。而到了云原生时代,在Kubernetes基础架构之上,结合Istio服务网格,提供了多云、混合云的支持能力,针对微服务提供了有效的治理能力,并以Kubernetes和Istio为基础,提供了针对特定应用负载的不同支持,例如针对Kubef low服务的流量治理、为Knative提供负载的路由管理能力等。

尽管Service Mesh在云原生系统方面的应用已经有了快速的增长,但仍然存在巨大的提升空间。无服务器(Serverless)计算正好需要Service Mesh的命名和链接模型,这让Service Mesh在云原生生态系统中的角色得到了彰显。服务识别和访问策略在云原生环境中仍显初级,而Service Mesh毫无疑问将成为这方面不可或缺的基础。就像TCP/IP一样,Service Mesh将在底层基础设施这条道路上更进一步。

混合云可以采用多种形式。通常,混合云指的是跨公有云和私有(内部部署)云运行,而多云意味着跨多个公有云平台运行。

采用混合云或多云架构可以为你的组织带来诸多好处。例如,使用多个云提供商可以帮助你避免供应商锁定,能够让你为实现目标选择最佳的云服务。使用云和本地环境,你可以同时享受云的优势(灵活性、可扩展性、成本降低)和本地的好处(安全性、低延迟、硬件复用)。如果你是首次迁移到云端,采用混合云步骤可以让你按照自己的节奏,以最适合你业务的方式进行。

根据我们在公有云上的实践经验及从客户那里得到的信息,我们认为采用混合服务网络是简化云和本地环境中应用程序管理、安全性和可靠性的关键,无论你的应用程序是在容器中运行,或是在虚拟机中运行。

Istio的一个关键特性是它为你的工作负载(例如pod、job、基于VM的应用程序)提供服务抽象。当你转向混合拓扑时,这种服务抽象变得更加重要,因为现在你不只需要关注一个环境,而是需要关注若干个环境。

当你在一个Kubernetes集群上使用Istio时,可以获得包括可见性、细粒度流量策略、统一遥测和安全性在内的微服务的所有管理优势。但是当你在多个环境中使用Istio时,实际上是为应用程序提供了一个新的超级能力。因为Istio不仅仅是Kubernetes的服务抽象,也是一种在整个环境中标准化网络的方法。它是一种集中API管理并将JWT验证与代码分离的方法。它是跨云提供商的安全、零信任网络的快速通道。

那么所有这些魔法是如何发生的呢?混合Istio是指一组Istio Sidecar代理,每一个Envoy代理位于所有服务的旁边,而这些服务可能运行在不同环境中的每一个虚拟机、每一个容器中,而且这些Sidecar代理之前互相知道如何跨边界交互。这些Envoy Sidecar代理可能由一个中央Istio控制平面管理,或由每个环境中运行的多个控制平面管理。