返回

如何通过 Cilium 使网络运行更加透明

后端

释放 Cilium 的全部威力:使用 Hubble 优化网络可视化

前言

在当今快速发展的数字世界中,网络可见性对于管理和故障排除 Kubernetes 集群至关重要。Cilium,一种流行的容器网络接口 (CNI) 插件,通过其 Hubble 组件提供了一个强大的网络可视化解决方案。本文将深入探讨 Hubble,展示如何利用它来提升 Kubernetes 网络的透明度和可控性。

什么是 Hubble?

Hubble 是 Cilium 套件中一个可选组件,充当 Kubernetes 集群中网络流量的监视哨。它利用 eBPF 技术,一种内核级数据包过滤工具,在数据包流经内核时截获它们。Hubble 将截获的数据包存储在内存中或转发到外部观测系统,如 Elasticsearch 或 Kafka。通过其 Web 用户界面 (UI) 和命令行界面 (CLI) 工具,Hubble 使网络工程师能够轻松访问和分析网络流量数据。

Hubble 的工作原理

Hubble 的工作原理可以归纳为以下几个步骤:

  1. 数据包截获: Cilium 将网络流量转发至 Hubble 组件。
  2. eBPF 过滤: Hubble 利用 eBPF 技术在数据包流经内核时将其截获。
  3. 数据存储: Hubble 将截获的数据包存储在内存中,或转发至外部观测系统。
  4. 数据可视化: Hubble 提供了一个 Web UI 和 CLI 工具,允许用户访问和分析网络流量数据。

安装 Hubble

在 Kubernetes 集群中安装 Hubble 非常简单。使用以下步骤:

  1. 添加 Cilium Helm 存储库:
helm repo add cilium https://helm.cilium.io/
  1. 更新 Helm 索引:
helm repo update
  1. 使用以下命令安装 Cilium 并启用 Hubble 组件:
helm install cilium cilium/cilium --version <X.Y.Z> \
  --namespace=kube-system \
  --set hubble.enabled=true \
  --set hubble.ui=true

使用 Hubble UI

Hubble UI 提供了 Kubernetes 集群中网络流量的实时视图。它允许你查看网络组件之间的交互情况,并识别潜在问题。通过以下命令访问 Hubble UI:

kubectl port-forward -n kube-system $(kubectl get pods -n kube-system -l k8s-app=cilium -o jsonpath='{.items[0].metadata.name}') 9091:9091

在浏览器中打开 http://localhost:9091 即可访问 Hubble UI。

使用 Hubble CLI

Hubble CLI 工具提供了一系列命令来查询和分析网络流量数据。一些常用命令包括:

  • cilium hubble observe:监视实时网络流量
  • cilium hubble get:获取网络流量的详细信息
  • cilium hubble list:列出网络流量的简要信息

例如,可以使用以下命令查看所有网络流量:

cilium hubble observe

或者,可以使用以下命令获取特定网络流的详细信息:

cilium hubble get <flowID>

集成 Hubble 与其他工具

Hubble 可以与其他工具集成,从而增强集群的可观测性。例如,可以将 Hubble 与 Elasticsearch 和 Kibana 集成,以进行更强大的网络流量分析。

结论

Hubble 是 Cilium 套件中的一个宝贵工具,它为 Kubernetes 网络管理员提供了无与伦比的网络可见性。通过直观的 UI 和功能强大的 CLI 工具,Hubble 使排查网络问题和优化网络性能变得轻而易举。对于寻求提升集群可控性和透明度的组织而言,Hubble 是一个不可或缺的工具。

常见问题解答

  1. Hubble 与其他网络可视化工具有何不同?

    Hubble 是一个特定于 Cilium 的解决方案,它充分利用了 eBPF 技术。它与其他工具的不同之处在于,它能无缝集成到 Cilium 架构中,并提供开箱即用的深层网络可见性。

  2. Hubble 是否需要额外的硬件或软件?

    不,Hubble 仅在 Kubernetes 集群中运行,无需额外的硬件或软件。

  3. Hubble 如何处理大量流量?

    Hubble 使用内存缓冲区和后台处理机制来高效处理大量流量。它不会影响集群的性能,即使在高流量情况下也是如此。

  4. Hubble 可以与其他容器编排工具一起使用吗?

    目前,Hubble 仅支持 Kubernetes。然而,Cilium 社区正在探索将其扩展到其他编排工具。

  5. Hubble 是否提供安全功能?

    Hubble 本身不提供安全功能。它主要关注网络可视化。对于网络安全,需要使用其他 Cilium 组件,如其网络策略引擎。