广告

服务网格的6个新标准

  • 浏览(84)
  • 评论(0)
  • 译者:k8s

在过去的几年里,在快速崛起的服务网格领域工作的工程师们将目光投向了媒体所提到的“服务网格战争”。虽然表面上有些夸张,实际上确实存在一场战争,仅仅让两个不同的服务网格相互通信就是一场噩梦。虽然服务网格接口(ServiceMesh Interface,SMI)已将行业推向真正互操作性所需的开放标准,但要将这些标准推向服务网格可以成为通用通信和管理层的地步,还有很多工作要做。

一个特别的例子是:工作负载数据现在标准化程度很低,这在为服务网格构建标准化管理工具方面产生了问题。不同的网格在可观测性和遥测方面也有不同的观点。这些不同的视图意味着安装服务网格需要进行一些认真的调整,以便在不同的网格上设置相同的可观测平面。

那么,我们如何结束这场战斗并帮助服务网格实现互操作性呢?关键是中立。有了一个中立标准的核心团队,服务网格可以停止战斗。除了SMI之外,此愿望列表还可以标准化服务网格——不是通过定义标准的角度,而是通过这些标准在实践中的行为和交付方式。

1.快速安装标准

服务网格采用的一个重要障碍是担心安装。这是可以理解的。服务网格的安装和部署可能非常困难。为了解决这个问题,作为一个设计原则,我们可以在标准Kubernetes集群上建立一个“快速安装”标准,甚至基准安装时间。

安装时间也是服务网格处理复杂性的一个很好的指标。它展示了即使在幕后进行复杂活动,也能提供良好的用户体验的能力。更好的是,它通过将网格限制在核心功能中来展示智能优先级。这就是说,总体目标应该是一个“选择加入”的体验,而不是一个“选择退出”的噩梦。

2.快速移除标准

快速、无损伤的移除(只要可能)是快速安装的另一面。任何难以移除的服务网格都会降低采用的可能性,并使应用程序团队更难在关键任务中信任网格。回滚到运行任何没有网格的应用程序或服务,特别是在内部,将成为团队为Kubernetes环境设计的赌注,这些环境是流动的,并为他们提供完全的控制。

当然,快速移除可能会有所不同。例如,如果应用程序团队创建了一个网格环境,其中包含大量定制的CRD和高级功能,那么移除网格可能需要更长的时间。尽管为这一问题设定标准和基准是一个容易达成一致的容易处理的问题。

3.核心可观察性标准

如果你不能观察它,你就无法管理它并理解它。Kubernetes和服务网格提出了一些新的可观察性挑战,因为它们的主要关注点是网络层,而不是发生面向用户事务的应用层。

OpenTracing是一个非常好的开始,它周围的社区建立了一个强大的愿景,用一个通用API提供所有服务网格的可观察性。Zipkin和Jaeger也有各自的优势,Zipkin是一个一体化的跟踪解决方案。然后还有其他项目,比如OpenCensus,它们以其他方式攻击跟踪和可观察性。然而,有太多的相互竞争的项目导致了缺乏跟踪上下文的公认标准。

幸运的是,为了将可观察性统一到一个标准中,不兼容的OpenTracing和OpenCensus项目于2019年春开始合并,形成OpenTelemetry。这是向前迈出的一大步,将跟踪和支持的语言库结合到云原生遥测的更广阔视野中。OpenTelemetry还采用W3C跟踪上下文作为标准化的跟踪传播机制。不过,还有工作要做。虽然支持最流行的编码语言,但仍有几十种不受支持。此外,并非所有可观察性后端都同样支持OpenTelemetry。这是一项正在进行的工作,但很有希望。

4.工作负载管理标准

了解工作负载的需求会影响服务网格处理该工作负载的方式。例如,作为金融交易的工作负载应要求对包含帐户或个人身份数据的所有活动范围进行加密和mTLS。对于如何在Kubernetes和服务网格中处理这些工作负载,没有简单的方法来标记工作负载类型并设置不同的标准。目前,最接近的事情是为每个服务设置规则和策略,例如重试、超时和终止。虽然这可能适用于具有少量微服务的环境,但随着你添加更多微服务,它很快就会变得很复杂。服务网格需要一种标准化的方法来标记工作负载类型,同时为其分配需求和规则。这样,工作负载管理将更容易、自动化和精确。

5.数据管理标准

在瞬息万变的环境中管理数据是一项挑战。早期,Kubernetes用户避免在集群中运行关键数据库,并将服务网格链接到外部数据存储,以确保其数据安全可靠。由于GDPR、FIPS和CCPA等法规,数据需要特别小心,这些法规涵盖了如何处理数据、如何让客户访问数据以及数据的物理位置。Kubernetes和服务网格中的数据处理仍然很复杂,主要是事后考虑。

这类似于非Kubernetes世界,大多数开发人员将原型和早期应用程序项目的数据转储到简单的SQL store、S3 bucket或MongoDB中,从而延迟了数据管理决策过程。在Kubernetes和服务网格中,随着微服务将数据事务分解为更为离散的任务和用途,这可能会增加复杂性。这反过来又需要更详细的管理。与工作负载类似,数据管理标准允许运维人员和开发团队使用标准语言或标准化结构定义每个服务的数据需求。

6.协议支持标准

如今,服务网格之间的协议支持存在很大差异,这使得一个服务网格与另一个服务网格的交换变得复杂。此外,关于应该支持哪些协议以及该支持应该是什么样子的还没有达成全面协议。达成协议至关重要,因为协议在应用程序设计中通常至关重要。例如,一些应用程序将gRPC用于特定的通信需求,但并非所有服务网格都支持gRPC过程的完全可观察性。因此,具有一致支持功能的一致协议支持对于网格互操作性和可移植性至关重要。

原文链接:
https://thenewstack.io/be-like-switzerland-6-new-service-mesh-standards/

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头