随着分布式服务架构的流行,特别是微服务等设计理念在现代应用普及开来,应用中的服务变得越来越分散,因此服务之间的通信变得越来越依赖网络,很有必要来谈谈实现微服务可观测性中越来越重要的一环——云原生网络的可观测。K8s 是微服务设计理念能落地的最重要的承载体,本文主要聚焦谈谈 K8s 的网络可观测性,以及其给基础设施/应用等团队能带来的价值。
谈 K8s 网络可观测性之前,先简单了解下 K8s 的网络通信是如何实现的,CNCF 定义了容器网络接口即 CNI,CNI 提供了一种应用容器的插件化网络解决方案,定义对网络容器进行操作和配置的规范,通过插件的形式对 CNI 接口进行实现。实现了 CNI 接口则成为 CNI 插件,常见的 CNI 插件包括 Calico、Cilium、Flannel、Kube-OVN、Terway、Weave Net 等,每种 CNI 插件都有自己的偏重性,使用者可用根据环境限制、功能需求和性能需求等各种方面选择自己所需的 CNI 插件。
目前已经开始有一些 CNI 插件厂商在支持 K8s 网络可观测性了,例如 Cilium 单独起了一个子项目 Hubble 来做分布式网络和安全的可观测性,目前已知的如 Calico,Kube-OVN 等也开始推进网络可观测性能力了;也有纯第三方厂商在做 K8s 网络可观测性,DeepFlow 就实现了一种与 CNI 插件无关的网络可观测性能力。下面将重点介绍下 Hubble 和 DeepFlow 两个组件,看看目前 K8s 网络可观测性的能力。
官网介绍