Linkerd 最近在企业中得到了广泛的应用,像Adidas、Microsoft、Plaid和DB Schenker等公司都在生产基础架构中大规模部署 Linkerd,以提供安全、合规性和可靠性。根据企业用户的反馈,即将推出的 Linkerd 2.14 版本将引入一组新功能,以处理企业部署中常见的多集群 Kubernetes 配置类型。
其中最重要的新功能之一,是改进 Linkerd 在共享扁平网络(flat network)的多集群通信方面的能力。在本篇博客文章中,我将谈谈这意味着什么以及为什么它很重要。
Linkerd 今天是如何处理多集群?
如果你使用多个 Kubernetes 集群并希望它们彼此通信,Linkerd 可以为你提供跨集群边界发送流量的能力:
完全保护。这意味着在集群之间的流量是加密的,使用相互 TLS、工作负载标识(而不是网络标识!)和 Linkerd 的细粒度、零信任授权策略进行认证和授权。
对应用程序透明。这意味着应用程序完全与集群拓扑解耦,这使得操作员可以利用强大的网络功能,例如动态将流量故障转移到其他集群。
可观察和可靠。Linkerd 的强大的 L7 内省和可靠性机制,包括黄金指标、重试、超时、分布式跟踪、断路器等等,都可以像对集群内流量一样用于跨集群流量。
自 2020 年 Linkerd 2.8 版发布以来,Linkerd 就支持多集群 Kubernetes 部署。该版本引入了一个简单而优雅的设计[7],涉及添加一个服务镜像组件以处理服务发现,以及一个多集群网关组件以处理来自其他集群的流量。
这个网关设计允许 Linkerd 的多集群支持完全独立于底层网络拓扑。无论你的集群是放置在同一个数据中心、分散在不同的云提供商之间,还是以混合方式在本地和云部署之间部署,Linkerd 都可以使用相同的方式。
但是,随着 Kubernetes 在企业环境中的应用越来越广泛,我们看到越来越多的情况是集群在共享扁平网络中部署。在这种情况下,我们可以通过删除网关来进行一些重要的优化。
扁平网络的多集群通信
在共享扁平网络的情况下,不同 Kubernetes 集群中的 Pod 可以直接路由到彼此。换句话说,在集群 1 中的 Pod 可以使用底层网络直接与集群 2 中的 Pod 建立 TCP 连接。
如果 Pod 可以进行路由,为什么还要使用 Linkerd?与集群内使用 Linkerd 的原因完全相同:提供超出基线 TCP 连接所提供的安全、可靠性和可观察性保证。
在 Linkerd 2.14 中,我们将引入一种额外的多集群通信模式,专为共享扁平网络而设计:直接在集群之间的 Pod 之间进行通信,无需网关中介。
在这种方法中,Linkerd 将从源集群上的 Pod 直接路由通信到另一个集群上的目标 Pod,而不需要经过网关。这提供了几个优点,包括:
通过消除客户端和服务器之间的额外跳跃来改进跨集群调用的延迟。
通过在 mTLS 调用跨集群连接时保留工作负载标识,而不是使用网关标识,来提高安全性。
通过减少通过多集群网关路由的流量量来降低云成本,这通常是作为云负载平衡器实现的。
这种方法仍然保留了 Linkerd 多集群设计的两个关键方面:
分隔失效域。每个 Kubernetes 集群都独立运行其自己的 Linkerd 控制面,与其他集群无关,单个集群的故障不能使其他集群的服务网格失效。
标准化的统一架构。与将 L7 逻辑分别分配到操作不同级别和范围的复杂代理的其他解决方案不同,Linkerd 的基于 Rust 的“微型代理”sidecar 是控制 Pod 和集群之间流量的唯一机制,为你提供单一的操作表面区域进行监视和管理,并清晰地隔离失败和安全域。
最后,这种方法提高了 Linkerd 在整个环境中提供统一身份验证层的能力,并执行粒度化的授权策略(即“微分段”)。因为网关不再是中介,跨集群连接保留了源的工作负载标识,授权策略可以设计为直接利用这些标识。
(对于 Kubernetes 专家,请注意,此实现受到Multi-Cluster Services API 提案(KEP-1645)[8]的启发,并与其松散对齐。虽然严格遵守此 KEP 目前不是我们的目标,但我们期待看到该提案的进一步发展。)
那么我们何时可以拥有这个惊人的新功能?
Linkerd 2.14 将于下个月发布。通过添加 Pod 对 Pod 通信,我们有信心 Linkerd 将继续成为连接多个 Kubernetes 集群的最简单方式,现在包括可以利用扁平网络的部署。
Linkerd 面向所有人
Linkerd 是 CNCF 的一个毕业阶段项目[9]。Linkerd 致力于开放治理[10]。如果你有功能请求、问题或评论,我们很乐意邀请你加入我们不断壮大的社区!Linkerd 托管在GitHub[11]上,我们在Slack[12]、Twitter[13]和邮件列表[14]上拥有蓬勃发展的社区。快来加入我们的行列吧!