万花筒
作者万花筒·2023-02-09 11:26
系统架构师·红帽企业级开源解决方案中心

K8S和OpenShift中网络流的花样展现

字数 2496阅读 2406评论 0赞 0

Red Hat OpenShift 容器平台( OCP )从一开始就具有监控功能,从 4.10 版本,开始提供网络可视化功能(开发预览版),以实现更高级的网络监控能力,本文主要是介绍如何通过各种不同形式的图形来展示网络流的现状,以满足不同场景的运维需要。

关于如何部署可参考上一篇文章 在 OpenShift 中实现网络观测和洞察

网络可观察性在 OpenShift web 控制台管理中提供用户界面,以过滤和可视化集群网络流 :

  • 图表(排名前 5 流量的服务,以及总流量示例)
  • 表格(显示按时间排序的流量源和流量目的地)
  • 拓扑(使用有向图布局)

    如果您对集群的网络可观测性感兴趣,请查看官方文档进行安装 .

网络呈现

拓扑视图是一种很好的方法,可以了解集群的不同组件如何在内部交互,并确定哪些组件与外部世界通信。它还可以帮助您定义网络策略或突出显示潜在威胁。

为了避免庞大且不可读的网络图,我们在“网络可观察性”中引入了多种选项,以聚焦您正在查找的内容:

· 时间范围默认显示最后 5 分钟,同时允许您关注特定时间窗口

· 可以根据源和 / 或目的地的各种条件,进行筛选,例如 IPs , Ports , Protocol , Kind , Name 等

· 细节颗粒度(显示范围选项)允许从 Node / Namespace / Owner / Resource 中进行选择,并将指标聚合到指定层。

· 分组能力,可以根据所有权排列组件

使用示例

我们部署一个 httpd 的应用示例,然后看一下视图。应用示例可参考下面链接: https://github.com/sclorg/httpd-ex

从上图可以看到,最终部署的蓝色 pod 与另一个名为 httpd-sample-1-build 的 pod 紧密相关, httpd-sample-1-build pod 从 openshift 内部镜像仓库( 1 )中拉取镜像,( 2 )对提供的镜像 URL 进行 DNS 解析,还从解析的外部 IP 中拉取镜像( 3 ),然后调用 kubernetes 服务创建 pod ( 4 )。
最后,在( 5 )打开应用主页面后,我们的应用 pod 和 openshift ingress 之间显示了一些网络流。
移动时间窗口或稍等片刻后, httpd-sample-1-build pod 将消失,因为此时它的状态现在为 Completed

复合呈现

有时我们需要看到不止一个应用程序来解决网络问题或突出集群级别的带宽使用情况。

2D 网络拓扑可能会在显示方式上有其限制,因为您需要在多个选项之间切换,并且很难在单个渲染中获得你想清晰看到的总览。

比如从上图中,我们发发现 2D 会有如下缺陷 :

  • 几乎不可能全面了解整个网络
  • 在平面图上绘制每个连接很难阅读
  • 如果没有具体表现,很难理解对象之间的所有权和关系

另一个维度

这就是为什么 3D 拓扑要用在这里。关于 3D 拓扑可详见: https://github.com/jpinsonneau/react-three-topology
3D 呈现方式是一种非常 “ 古老 ” 的技术,你可以在线找到很多这样的技术,例如 networkmaps , vagrant-mesh-net 甚至更通用的 splunk-3D-graph-network-topology-viz . 每一个都有自己的渲染原理来解决特定的使用场景

下面是一种使用大家都知道的表示来渲染网络的方法:“建筑物” .

  • 要在Network Observability中启用此功能,您需要使用Network Observable v1.0并在URL中添加“&3d=preview”。
  • 然后转到拓扑选项卡->显示高级选项->显示选项
  • 从那里将范围选项设置为“资源”,将布局设置为“3D”。

  • 用虚线绘制的建筑物代表您的集群每个内部通信都在这些线内,每个楼层都用一条线表示
  • 建筑物周围呈圆形的砖块构成 external ips
  • 带有紫色砖块的 Ground floor 代表您的节点。您可以在 Ground floor 有多个节点
  • 绿色的 Upper floors 表示 Namespaces , Namespaces 在节点之间对齐,因此每层表示一个 namespace 。如果节点未承载 namespace ,则会看到一个空白空间
  • Rooms 代表所有者,如深蓝色的 Deployments 或浅蓝色的 StatefulSets ,每个 namespaces 可以有多个所有者,如果负载是分布式的,它们将在每个 Node+Namespace 组合上重复
  • 最后 , rooms contents 描述了 Pods ,这些 Pods 根据其亲属以适当的节点 +namespace+ 所有者组合表示

    这种呈现方式强调了整个所有权链
    从 Node 到 Pod 通过 Namespace . 这还表现了节点之间是怎样负载均衡的。

    网络流量的重要部分将被突出显示,因为与 2D 视图相比,线不太可能交叉,并且它们的大小和颜色根据字节率而不同。细黑线表示流量比粗红线小。

结论

我们需要明确,不同的用例要采用不同的恰当的呈现方式。工程师、 UI/UX 和客户内部团队之间的日常工作需要这些。社区项目可能会在未来实现更多的视图,以突出表现网络问题、健康问题、威胁问题和使用情况。例如,接下来将实现对连接跟踪的可视化,具体详情在这里可以看到 sankey chart .

贡献社区 !

欢迎评论,欢迎在社区中开 Issue ,或者是贡献好点子。
控制台插件: netobserv console plugin
网络观测组件: netobserv component

## 更多的展示效果一览







译自: https://cloud.redhat.com/blog/how-to-display-your-kubernetes-/-openshift-network-flows

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广