OpenShift 4 - 可观测性之用 Network Observability Operator 对网络流量进行监控观测(视频)

news2024/11/18 9:37:20

《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在支持 OpenShift 4.12 + Loki Operator 5.7.2 + Network observability 1.2.0 的环境中验证

文章目录

  • Network Observability 相关组件和架构
  • 安装 Network Observaility 功能
    • 安装 Operator
    • 配置对象存储
    • 配置 Loki 环境
    • 配置 Network Observability 的 FlowCollector
  • 使用 Network Observability
    • 部署测试应用
    • 用 Network Observability 跟踪网络流量
      • 查看整体的网络流量
      • 查看和特定资源相关的网络流量
  • 视频
  • 参考

Network Observability 相关组件和架构

Network Observability 的核心功能是收集网络流,然后用可视化方式呈现出来。Network Observability 可以对 OpenShift 的 pod、Deployment、DeploymentConfig、StatefulSet、CronJobs、Jobs、DemonSet、ReplicaSet、Route、Service 资源的网络流量进行监控。

为了收集网络流,首先使用 eBPF 代理来钩住网络事件,它可以在内核层面捕获和输出进出接口的数据。eBPF 允以安全的方式扩展内核,并且性能更强。

在这个输出数据的接收端,名叫 Flowlogs Pipeline(FLP)的流量收集器来处理接收到的数据,并删除多余的和不相关的数据,使其可被 Kubernetes 使用。如果有突发的或大量的流量,可以要考虑使用 Apache Kafka 作为 eBPF 代理和 FLP 之间的中介,以提供缓冲之用。

FLP处理完的网络数据是通过 Loki 保存在对象存储中,最后在 OpenShift 的 Web Console 中展现出来。
在这里插入图片描述

安装 Network Observaility 功能

为了安装 Network Observability 需要先安装 Loki 环境,而 Loki 环境又需要对象存储。 因此不但需要安装相关的 Operator,还需要配置 Loki 使用的对象存储。

安装 Operator

  1. 使用默认配置安装 Loki Operator,该 Operator 将会安装在 openshift-operators-redhat 命名空间中。
  2. 使用默认配置安装 Network Observaility Operator,该 Operator 将会安装在 openshift-netobserv-operator 命名空间中。
    在这里插入图片描述

配置对象存储

本文使用 AWS S3 作为 Loki 使用的对象存储。

  1. 执行命令创建访问 AWS 的凭证文件,其中我们会用到 us-east-1 区的 AWS S3 服务。
$ aws configure
AWS Access Key ID [None]: AKIAVROBYTZYQBBNWLF6
AWS Secret Access Key [None]: 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
Default region name [None]: us-east-1
Default output format [None]: json
 
$ cat .aws/credentials
[default]
aws_access_key_id = AKIAVROBYTZYQBBNWLF6
aws_secret_access_key = 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
  1. 使用主机名在 AWS 上创建 S3 存储的 bucket。
$ GUID=`hostname | cut -d. -f2`
$ aws --profile default s3api create-bucket --bucket $GUID --region us-east-1 --create-bucket-configuration LocationConstraint=us-east-1
{
    "Location": "http://kh7zm.s3.amazonaws.com/"
}
  1. 执行命令创建项目。
$ oc new-project netobserv
  1. 基于以下 YAML 创建访问 AWS bucket 的 Secret 对象。
apiVersion: v1
kind: Secret
metadata:
  name: lokistack-dev-s3
  namespace: netobserv
stringData:
  access_key_id: w3EDfSERUiLSAEXAMPLE (Replace with your aws creds)
  access_key_secret: mshdyShDTYKWEywajsqpshdNSUWJDA+1+REXAMPLE (Replace with your aws creds)
  bucketnames: j68pw (we called it j68pw in our example)
  endpoint: https://s3.us-east-1.amazonaws.com/
  region: us-east-1

配置 Loki 环境

  1. 在 netobserv 项目中使用 Loki Operator 根据以下 2 个截图创建一个 Loki Stack 对象。
    在这里插入图片描述

在这里插入图片描述
上述配置过程会生成以下 YAML,其中 gp2-csi 是 OpenShift 已有的 StorageClass。

apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: loki
  namespace: netobserv
spec:
  size: 1x.extra-small
  storage:
    schemas:
      - effectiveDate: '2020-10-11'
        version: v11
    secret:
      name: lokistack-dev-s3
      type: s3
  storageClassName: gp2-csi
  tenants:
    mode: openshift-network
  1. 完成后在 OpenShift 控制台 “开发者”视图的 “拓扑” 中可以看到如下部署的资源。
    在这里插入图片描述
  2. 根据以下 YAML 创建 ClusterRole 和 ClusterRoleBinding 对象。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: loki-netobserv-tenant
rules:
- apiGroups:
  - 'loki.grafana.com'
  resources:
  - network
  resourceNames:
  - logs
  verbs:
  - 'get'
  - 'create'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: loki-netobserv-tenant
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: loki-netobserv-tenant
subjects:
- kind: ServiceAccount
  name: flowlogs-pipeline              
  namespace: netobserv

配置 Network Observability 的 FlowCollector

  1. 执行命令查看 loki-gateway-http 和 loki-query-frontend-http 服务的端口,以及访问 gateway。
$ oc get svc loki-gateway-http -n netobserv
NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
loki-gateway-http   ClusterIP   172.30.85.73   <none>        8080/TCP,8081/TCP,8083/TCP   3m49s
 
$ oc get svc loki-query-frontend-http -n netobserv
NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
loki-query-frontend-http   ClusterIP   172.30.156.155   <none>        3100/TCP   3m57s
 
$ oc get configmap loki-gateway-ca-bundle -n netobserv
NAME                     DATA   AGE
loki-gateway-ca-bundle   1      4m1s
  1. 在 netobserv 项目下根据以下 2 个截图使用 Network Observability Operator 创建一个 FlowCollector 对象。注意:需要修改其中 loki 的 tenantID、url、authToken、tls-caCert-name、tls-enabled、statusUrl 配置。
    在这里插入图片描述

在这里插入图片描述

  1. 配置完后可在 netobserv 项目中看到以下部署的资源。
    在这里插入图片描述
    另外还会自从创建 netobserv-privileged 项目,并在其中以 DemonSet 的方式运行 ebpf 代理。
$ oc get daemonsets -n netobserv-privileged netobserv-ebpf-agent
NAME                   DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
netobserv-ebpf-agent   1         1         1       1            1           <none>          33m
  1. 刷新 OpenShift 控制台,在 “观察” 中会出现新的 “Network Traffic” 菜单,点击该菜单即可看到 Network Traffic 页面。
    在这里插入图片描述

使用 Network Observability

部署测试应用

$ oc new-project mesh-arena
$ oc apply -f https://raw.githubusercontent.com/jotak/demo-mesh-arena/zizou/quickstart-naked.yml -n mesh-arena

用 Network Observability 跟踪网络流量

查看整体的网络流量

  1. 进入 “观察” 的 “Network Traffic” 菜单,在 Quick filters 选中 Pods network,在 Common Namespace·中输入 mesh-arena,然后选择合适的 Time range 和 Refresh interval。
    在这里插入图片描述
  2. 进入 Traffic flows 可以看到收集到的流量数据。每个数据包括 Source 和 Destination,以及发送的数据字节量。
    在这里插入图片描述
  3. 进入 Toplogy,可以在 Show advanced options 中设置 Display options(例如以下显示选项)。
    在这里插入图片描述
  4. 选中一条线后可以在右侧看到 Source 和 Destination 对应的 pod。注意:连线代表在统计时间范围内在 Source 和 Destination 之间有网络流量,而箭头代表网络流向。从图上可以看到有些线是双向箭头,有些是单向箭头。
    在这里插入图片描述
    注意:如连线有双向箭头,则连线上显示的数字优先显示 B->A 的网络流量。
    在这里插入图片描述
    而单项箭头的联系会显示 A->B 的网络流量。
    在这里插入图片描述
    选中一个特定组件,会显示和该节点相关的流入和流出网络流量。
    在这里插入图片描述

查看和特定资源相关的网络流量

  1. 选择测试应用的一个 Pod(例如 ui-base-xxx),然后查看 Network Traffic 的 Topology。可以在 advanced options 中的 Display options 中选择 Scope 为 Node,Groups 为 None,这样将显示该资源在节点之间的网络流量。
    在这里插入图片描述
  2. 在 advanced options 中的 Display options 中选择 Scope 为 Namespace,Groups 为 None,这样将显示该资源在 Namespace 之间的网络流量。
    在这里插入图片描述
  3. 点击上图有 Step into this namespace 的图标,将显示下图,以 Namespace 为分组的各 Deployment 之间的网络流量。
    在这里插入图片描述
  4. 点击上图 ui-base 部署图标的右下方箭头,将进一步以 Deployment 为分组显示 Pod 之间的网络流量。
    在这里插入图片描述
  5. 可在 advanced options 中设置 Display options 的 Scope 为 Resource,Groups 为 Namespace+Owner。然后在选中不同的 Namespace 或 Deployment,可以在右方看到该分组所有的网络流量。
    在这里插入图片描述

视频

视频

参考

https://cloud.redhat.com/blog/check-out-the-new-network-observability-support-in-openshift-4.12
https://cloud.redhat.com/blog/a-guide-to-providing-insight-with-network-observability
https://docs.openshift.com/container-platform/4.13/networking/network_observability/network-observability-overview.html
https://www.youtube.com/watch?v=4FC6j1NvlNE&t=443s
https://github.com/netobserv/documents
https://github.com/liuxiaoyu-git/ocp4-network-security/blob/netobserv/netobserv/netobserv.md
https://github.com/netobserv/network-observability-operator

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scrapy的基本使用

目录 Scrapy是什么 安装 使用 获取更多页面信息 写入数据库 图片下载 文件下载 更改文件名称以及路径 更改图片名称以及路径 循环获取页面信息时&#xff0c;item的数据重复或者对不上 下载文件时获取文件流直接上传到某个地方 Scrapy是什么 Scrapy 是一个基于 Pyth…

园区自然人代开果真那么好?可以解决成本票缺失吗?

园区自然人代开果真那么好&#xff1f;可以解决成本票缺失吗&#xff1f; 《税筹顾问》专注于园区招商、企业税务筹划&#xff0c;合理合规助力企业节税&#xff01; 自然人代开也就是指个人跟公司发生业务往来的时候&#xff0c;公司要求个人开具发票&#xff0c;进行入账&am…

open-mmlab/mmocr 环境搭建、推理和训练入门教程【一】

文章目录 博文基础信息Linux 搭建 open-mmlab/mmocr 运行环境准备数据集准备必要的预训练模型推理训练测试可视化输出 &#x1f4d9; 预祝各位 前途似锦、可摘星辰 博文基础信息 https://mmocr.readthedocs.io/zh_CN/dev-1.x/get_started/quick_run.html显卡&#xff0c;11G 1…

【Pytorch】梯度裁剪——torch.nn.utils.clip_grad_norm_的原理及计算过程

文章目录 一、torch.nn.utils.clip_grad_norm_二、计算过程三、确定max_norm 众所周知&#xff0c;梯度裁剪是为了防止梯度爆炸。在训练FCOS算法时&#xff0c;因为训练过程出现了损失为NaN的情况&#xff0c;在github issue有很多都是这种训练过程出现loss为NaN&#xff0c;作…

RISCV Reader笔记_3 RISCV汇编

RISC-V 汇编语言 函数调用的步骤在计算机组成与设计中也有过涉及&#xff1a; 指定寄存器存入参数&#xff1b;跳转到函数开始位置&#xff08;jal&#xff09;&#xff1b;在callee中按需保存寄存器&#xff1b;执行函数&#xff1b;恢复保存的寄存器&#xff1b;把返回值存入…

使用传统图像处理算法+机器学习进行shadow detection

前言 阴影是图像中常见的现象&#xff0c;它们对于场景理解和分析非常重要。由于阴影区域通常比较暗淡&#xff0c;而且与周围物体区别较大&#xff0c;因此在图像处理和计算机视觉领域中&#xff0c;阴影检测是一个重要的研究方向。传统的阴影检测算法通常基于阈值或边缘检测…

深入理解 kernel panic 的流程

我们在项目开发过程中&#xff0c;很多时候会出现由于某种原因经常会导致手机系统死机重启的情况&#xff08;重启分Android重启跟kernel重启&#xff0c;而我们这里只讨论kernel重启也就是 kernel panic 的情况&#xff09;&#xff0c;死机重启基本算是影响最严重的系统问题了…

180_Power BI 新卡片图计算组与同环比应用

180_Power BI 新卡片图计算组与同环比应用 一、背景 在 2023 年 6 月&#xff0c;Power BI 更新了新的视觉对象&#xff1a;Card(new) 。 当前还需要在预览功能中将其打开。 我们在实际的应用中将新卡片图做了一些应用&#xff0c;先来看看具体效果。 Power BI 公共 web 效果…

安全区域内活动UWB标签,高精度UWB定位监测,室内厘米级测距应用

随着人们对于室内安全和定位需求的增加&#xff0c;相应的技术应运而生&#xff0c;超宽带&#xff08;UWB&#xff09;标签定位技术应用于室内定位领域&#xff0c;并获得了快速的发展和应用。 UWB技术是一种基于极窄脉冲的无线技术&#xff0c;它的主要特点是无载波&#xf…

软件测试技能,JMeter压力测试教程,setUp线程组批量登录(九)

前言 前面一篇已经实现了在 setUp 线程组实现单个用户先登录后提取token给其它线程组使用&#xff0c;在压测的时候&#xff0c;单个用户登录很显然不能满足我们的压测需求 我们在压测接口的时候&#xff0c;需批量获取多个用户登录后返回的token值&#xff0c;那么在setUp 线…

RabbitMQ消息队列高级特性

文章目录 1.消息的可靠投递2.ConSumer ACK消费者确认接收消息3.消费者限流4.TTL过期时间5.死信队列6.延迟队列7.日志与监控8.消息追踪 1.消息的可靠投递 在线上生产环境中&#xff0c;RabbitMQ可能会产生消息丢失或者是投递失败的一个场景&#xff0c;RabbitMQ为了避免这种场景…

Redis慢查询分析

慢查询分析 谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间&#xff0c;当超过预设阀值&#xff0c;就将这条命令的相关信息&#xff08;例如&#xff1a;发生时间&#xff0c;耗时&#xff0c;命令的详细信息&#xff09;记录下来。 执行一条命令分为如下4个部分…

【每日算法 数据结构(C++)】—— 05 | 判断单链表是否有环(解题思路、流程图、代码片段)

文章目录 01 | &#x1f451; 题目描述02 | &#x1f50b; 解题思路03 | &#x1f9e2; 代码片段 The future belongs to those who believe in the beauty of their dreams. 未来属于那些相信梦想之美的人 01 | &#x1f451; 题目描述 给你一个单链表&#xff0c;请判断其中是…

Mac(M1)上安装Ubuntu虚拟机

Mac&#xff08;M1&#xff09;上安装Ubuntu虚拟机 0.下载资料汇总 VMware Fusionhttps://www.vmware.com/products/fusion/fusion-evaluation.htmlubuntu-desktop-arm64.isohttps://cdimage.ubuntu.com/jammy/daily-live/current/ 1.安装VMware Mac版本的VMware叫 VMware …

黑马程序员前端 Vue3 小兔鲜电商项目——(十一)支付页

文章目录 基础数据渲染封装接口数据渲染 支付功能实现支付携带参数支付宝沙箱账号信息 支付结果页展示模版代码绑定路由渲染数据 倒计时逻辑函数封装 支付页有俩个关键数据&#xff0c;一个是要支付的钱数&#xff0c;一个是倒计时数据&#xff08;超时不支付商品释放)。 基础…

Tomcat项目更新Tomcat版本,重新配置conf,并在Idea运行项目,服务器替换SSL证书

Tomcat项目更新Tomcat版本&#xff0c;重新配置conf&#xff0c;并在Idea运行项目 1.下载Tomcat包2.Tomcat配置-ssi配置3.Idea运行 Tomcat 项目4.服务器Tomcat替换SSL证书4. Tomcat 项目重启 1.下载Tomcat包 Tomcat 官网 - https://tomcat.apache.org/ jdk1.8.0_191 我选择的…

如何在电脑、手机《酷游链接》录制屏幕?一看就会!也有剪辑录制视频的方法哦!

最近&#xff0c;我的生活中出现了许多需要录制电脑屏幕的场景&#xff01; 『酷游链kw9㍠N͜E͜T提供』娜娜友善提醒&#xff0c;要自己输入才会显示出来&#xff01;比如会议&#xff0c;教学等场景。这些场景我们可以通过Windows10的内建软体来解决。另外&#xff0c;也出现…

Python小白应该怎么学习字典

1.Python 字典 字典 字典是一个无序、可变和有索引的集合。在 Python 中&#xff0c;字典用花括号编写&#xff0c;拥有键和值。 例子:创建并打印字典 thisdict {"brand": "Porsche","model": "911","year": 1963 } pr…

MUR20100DC-ASEMI快恢复二极管MUR20100DC

编辑-Z MUR20100DC在TO-263封装里采用的2个芯片&#xff0c;其尺寸都是102MIL&#xff0c;是一款共阴极快恢复对管。MUR20100DC的浪涌电流Ifsm为200A&#xff0c;漏电流(Ir)为10uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。MUR20100DC采用抗冲击硅芯片材质&#xff0c;…

技术管理第二板斧建团队-沟通

一、沟通的核心原则 我认为&#xff0c;沟通是内心想法和思考逻辑的外延&#xff0c;如果你有良好的沟通能力&#xff0c;可以在整个团队中营造公开透明的信任氛围&#xff0c;让信息透明的同时&#xff0c;也让团队成员愿意发出自己的声音。 但实际情况中&#xff0c;很多人…