服务网格Linkerd 2.10加入扩展组件机制

云计算原生运算基金会CNCF旗下的服务网格项目Linkerd,发布了最新版本Linkerd 2.10,这个版本加入扩展组件系统,使得默认控制平面只留下必要组件,非必要组件都以扩展组件的形式提供,整体文件大小大幅减少,另外,Linkerd 2.10还强化了跨集群连接安全性,以及对特定类型流量的处理能力。

在Linkerd 2.10中,控制平面现在采用模块化设计,可以通过安装扩展组件来扩展功能,扩展组件是Linkerd控制平面的可选软件组件。现在Linkerd 2.10默认控制平面,仅会包含运行的必要组件,其他像是Prometheus、Grafana、仪表板和其他非关键遥测组件,都会被打包成viz扩展组件,这样的改变使得Linkerd 2.10初始安装文件,从原本约500 Mb降为200 Mb。

默认Linkerd 2.10仅会附带3个扩展组件,viz、multicluster和jaeger,viz包含Prometheus、Grafana和仪表板等集群上指标堆栈,multicluster则提供跨集群通信的机制,而jaeger则包含Jaeger分布式关注收集器和UI。

官方提到,采用扩展组件机制有两个目的,第一是让Linkerd用户可以准确选择要在集群中,安装哪一部分的组件,对于已经设置集群外指标工作管线的用户特别有用,第二个目的则是让Linkerd社群,在构建特定的Linkerd运行程序和控制器时,不需要变动核心Linkerd CLI。

在Linkerd 2.10安装多集群扩展组件,就可以在集群间采用更安全的TCP连接。官方在Linkerd 2.8中加入了多集群支持,让Linkerd可以用安全、对应用程序完全透明,且无关拓扑的方法,跨集群边界连接Kubernetes服务,不过这些跨集群的连接都使用HTTP协议,而在Linkerd 2.10中的多集群功能,可以扩展使用TCP连接,提供与Pod对Pod相同的安全连接性。

另外,在Linkerd 2.10还添加了不透明连接端口(Opaque Ports),增加Linkerd处理特定类型流量的能力,简单来说,就是经过不透明连接端口的流量,Linkerd不会侦测所使用的协议。官方解释,协议侦测虽然是Linkerd的重要功能,但是部分像是使用TLS的MySQL连接的流量,与该功能不兼容,在之前的版本,需要从代理层级略过这些流量,而在Linkerd 2.10中,用户可以将这些连接标注为不透明连接端口,Linkerd就只会代理这些流量,但是不侦测流量协议。