Network Observability Operator 使用 eBPF 技术创建网络流。然后,OpenShift Container Platform 信息会增强网络流,并存储在 Loki 中。您可以在 OpenShift Container Platform 控制台中查看和分析所存储的 netflow 信息,以进一步洞察和故障排除。
Network Observability 的核心功能是收集集群中的网络流,然后用可视化方式呈现出来。Network Observability Operator 可以对 OpenShift 的 pod、Deployment、DeploymentConfig、StatefulSet、CronJobs、Jobs、DemonSet、ReplicaSet、Route、Service 资源的网络流量进行监控。
所需安装的组件 OperatorHub 均有提供,直接安装即可。
Network Observability Operator。
Loki Operator。FLP处理完的网络数据是通过 Loki 保存在对象存储中,最后在 OpenShift 的 Web Console 中展现出来。
OpenShift Data Foundation。Loki 需要配置对象存储,Loki 支持的日志存储 AWS S3, Google Cloud Storage, Azure, Swift, Minio, ,此次部署采用OpenShift Data Foundation来提供存储服务。
Local Storage Operator。作为 OpenShift Data Foundation 的依赖安装。
以上Operator 安装完成后
1. 在集群控制台中,点 Operators → 安装的Operators 查看所有已安装的 Operator。
确保所选 项目 为 openshift-storage。
2. 单击OpenShift Data Foundation 所提供的的 Api 一栏,然后单击 创建StorageSystem。
3. 在 创建StorageSystem 页面中,执行以下操作:
① 为 部署类型 选项选择 Full Deployment 。
② 选择 使用本地设备创建新存储类 选项。
③ 点 下一个。
如果还没有安装Local Storage Operator,系统会提示您安装 Local Storage Operator。
4. 在 Create local volume set 页面中,提供以下信息:
① 为 LocalVolumeSet 和 存储类 输入一个名称。
默认情况下,存储类名称会出现本地卷集名称。您可以更改名称。
② 任选以下一项:
所有节点上的磁盘:使用与所有节点上所选过滤器匹配的可用磁盘。
所选节点上的磁盘:仅在所选节点上使用与所选过滤器匹配的可用磁盘。
③ 点 下一个。
此时会显示一个用于确认创建 LocalVolumeSet 的弹出窗口。
④ 单击 Yes 以继续。
在 安全和网络 页面中本次略过没有配置
5. 在 查看并创建 页面中,检查配置详情。
若要修改任何配置设置,请单击 前一个 以返回到上一配置页面。
6. 单击 创建StorageClass
最后安装完成后效果如下,以有雀(统信容器云管理平台)为例:
1. 将视角切换为开发者视角
2. 选择 拓扑
3. 将项目切换为 Openshift-storage
4. 在搜索栏中键入noobaa-core
5. 点击应用图标右上角链接,访问noobaa
6. 进入到登录界面
7. 在管理员视角中访问工作负载
8. 选择 Secret
9. 确保项目为 Openshift-storage
10. 在过滤器中搜索 noobaa-admin
11. 点击链接进去详情界面
12. 下拉滑轮并点击显示值
13. 获取登录noobaa所需要的email地址和密码
14. 登录noobaa后进入概述界面并点击Connect Application
15. 将Cluster External Name 和Access Key ,Secret Key记录下来
创建 项目 netobserv 并在项目下创建 s3 secrect
示例如下:
apiVersion: v1
kind: Secret
metadata:
name: loki-s3
namespace: netobserv
stringData:
access_key_id: <accsess-key>
access_key_secret: <access-key-secret>
bucketnames: s3-bucket-name
endpoint: <Cluster external Name>
region: eu-central-1
其中access_key_id , access_key_secret 和 bucketnames的值 与Noobaa页面获取的Access Key Secret Key Cluster External Name一一对应。
1. 进入到 Operators → 安装的 Operators,从 项目 下拉菜单查看所有项目。
2. 查找 Loki Operator。在详情的 提供的APIs 下,选择 LokiStack。
3. 点 创建 LokiStack。
1) 设置名称为 loki(本次测试默认创建lokistack的名称为loki)
2) 设置LokiStack Size
3) 选择Object Storage的Secret为创建的secret
4) 选择Object Storage Secret Type的类型为s3
5) 选择任意 Storage Class Name
6) Mode 为Openshift-network
4. 等待lokiStack状态为Ready
定义 ClusterRole 和 ClusterRoleBinding。netobserv-reader ClusterRole 启用多租户,并允许单独的用户访问或组访问 Loki 中的流。您可以创建一个 YAML 文件来定义这些角色。
1. 使用 Web 控制台,点 Import 图标 +。
2. 将 YAML 文件放到编辑器中,然后点 Create :
ClusterRole 读取器 yaml 示例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: netobserv-reader ①
rules:
- apiGroups:
- 'loki.grafana.com'
resources:
- network
resourceNames:
- logs
verbs:
- 'get'
①此角色可用于多租户。
ClusterRole writer yaml 示例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: netobserv-writer
rules:
- apiGroups:
- 'loki.grafana.com'
resources:
- network
resourceNames:
- logs
verbs:
- 'create'
ClusterRoleBinding yaml 示例
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: netobserv-writer-flp
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: netobserv-writer
subjects:
- kind: ServiceAccount
name: flowlogs-pipeline ①
namespace: netobserv
- kind: ServiceAccount
name: flowlogs-pipeline-transformer
namespace: netobserv
①flowlogs-pipeline 写入 Loki。如果使用 Kafka,这个值为 flowlogs-pipeline-transformer。
在 Network Observability 中启用多租户,运行以下命令,授权 user1 的读权限:
$ oc adm policy add-cluster-role-to-user netobserv-reader user1
1. 确保在netobserv项目下(和Lokistack在同一项目下)。
2. 导航到 Operators → 安装的 Operators。在 提供的APIs 下, 选择 Flow Collector 链接。
3. 进入 Flow Collector 选项卡,然后点 创建 FlowCollector。在表单视图中进行以下选择:
1) spec.agent.ebpf.Sampling :指定流的抽样大小。较低的抽样大小会对资源利用率造成负面影响。
spec.loki.url :由于身份验证被单独指定,此 URL 需要更新https://loki-gateway-http.netobserv.svc:8080/api/logs/v1/network。URL 的第一个部分"loki"必须与 LokiStack 的名称匹配。
spec.loki.authToken: 选择 FORWARD 值。
spec.loki.statusUrl :将其设置为 https://loki-query-frontend-http.netobserv.svc:3100/。URL 的第一个部分"loki"必须与 LokiStack 的名称匹配。
spec.loki.tls.enable: 选择启用 TLS 的复选框。
loki 的 tenantID 为network
spec.loki.statusTls: enable 值为 false。对于证书引用名称的第一部分: loki-gateway-ca-bundle、loki-ca-bundle 和 loki-query-frontend-http、loki 必须与 LokiStack 的名称匹配。
等待 FlowCollectors状态为Ready后 刷新 web 页面
在观察--->网络流量 页面可以观察到应用程序的流量。
如下:
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!