一文搞定,K8s集群可视化网络图,提升集群性能的利器!

时间:2023-02-01 19:00:57

开篇

建立高性能的服务和系统是每个企业的核心任务。每天都有大量的技术出现,它们都承诺能够超越性能基准。然而,实际的生产环境往往是混乱的,如果不加以维护和监控,会造成严重的性能损失。

尽管Kubernetes是容器编排的不二选择,但许多组织未能实施它。成长中的组织,在扩大服务规模的过程中,会将复杂的东西引入到系统中。所以,了解基础设施是如何配置,以及集群如何运作和通信就显得至关重要了。

大部分的基础设施设置都被转变成一个系统网络,从而沟通和分享工作负载。如果我们能直观地看到这些系统是如何连接的会利于对系统资源的利用。使用一个高效的可视化和评估工具来绘制网络地图,对于监测和维护服务是至关重要的。

一文搞定,K8s集群可视化网络图,提升集群性能的利器!

可视化网络映射简介

网络映射是对网络内所有设备和连接进行识别和编目的过程。可视化网络地图是网络的图形化表示,显示设备和它们之间的联系。可视化网络地图可以提供对网络拓扑结构的全面了解,并确定潜在的问题或瓶颈,允许修改和扩展计划,可以大大改善故障排除、规划、分析和监控。

开源安全工具,如OpenVAS、Nmap和Nessus,可用于进行网络测绘和生成可视化网络地图。这些工具都是免费提供的,使它们成为希望改善网络安全的组织的一个成本效益选择。此外,许多开源安全工具还提供积极的社区支持,使用户能够分享知识、技巧和最佳实践,以充分发挥工具的潜力。

一文搞定,K8s集群可视化网络图,提升集群性能的利器!

使用可视化网络地图的优点

可视化网络地图是规划和开发新网络、扩展或更新现有网络、分析网络问题或议题的一个有效工具。

适当地设置可视化网络地图可以成倍地提高监测、跟踪和补救的能力。它可以给你一个清晰完整的网络图,使你能够准确地找到问题的潜在来源,并在当时解决它,或者它可以协助你进行实时网络监控,并提前通知你任何变化或问题。

Caretta和Grafana简介

Caretta是一个开源的网络可视化和监控工具,能够实时查看和监控网络。

一文搞定,K8s集群可视化网络图,提升集群性能的利器!

Grafana是一个开源的数据可视化和监控平台,使你能够创建自定义的仪表盘和警报,以及检查和分析数据。

一文搞定,K8s集群可视化网络图,提升集群性能的利器!

通过结合Caretta和Grafana,可以创建一个有效的解决方案来理解和管理你的网络。

Caretta如何使用eBPF和Grafana

Caretta存在的理由是帮助你了解分布式环境中的拓扑结构和设备之间的关系。它提供各种功能,如设备发现、实时监控、警报、通知和报告。它使用Victoria Metrics来收集和发布其指标,任何与Prometheus兼容的仪表板都可以使用这些结果。

Carreta通过启用容忍度,使其有可能接受典型的控制面节点注释。它使用eBPF(扩展的伯克利包过滤器)内核功能收集网络信息,如设备和连接细节,然后使用Grafana平台在可视化地图中呈现信息。

Grafana在可视化Caretta的网络地图中的作用

Grafana被设计成一个模块化和灵活的工具,可以简单地整合和搭载各种数据源和自定义应用程序。

由于其可定制的能力,你可以修改使用Grafana仪表盘的网络地图的呈现方式。此外,你可以从几个可视化选项中挑选,以一种可理解和有帮助的方式来展示收集的数据。Grafana对于显示Caretta收集的网络数据和给用户提供完整的网络图来说都是至关重要的。

使用Caretta和Grafana创建一个可视化的网络地图

要使用Caretta和Grafana创建可视化网络地图,你必须对它们进行设置、整合和配置。主要的配置项目是Caretta守护集。

你必须将Caretta守护程序部署到选择的集群中,该集群将收集网络指标到数据库中,并设置Grafana数据源指向Caretta数据库以查看网络地图。

使用Caretta和Grafana的先决条件和要求

Caretta是一个集成了先进功能的现代工具。它依赖于Linux内核版本>=4.16和x64位系统舵手图。

让我们深入了解一下,如何安装和配置这个出色的工具组合。

安装和配置Caretta和Grafana的步骤

有了已经预先配置好的helm图,安装Caretta只需几个电话就可以了。

建议将Caretta安装在一个新的、独特的命名空间。

helm repo add groundcover https://helm.groundcover.com/
helm repo update
helm install caretta --namespace caretta --create-namespace groundcover/caretta

同样的情况也可以适用于安装Grafana。

helm install --name my-grafana --set "adminPassword=secret" \n
--namespace monitoring -f custom-values.yaml stable/grafana

我们的custom-values.yaml将看起来像下面这样。

## Grafana configuration
grafana.ini:
## server
server:
protocol: http
http_addr: 0.0.0.0
http_port: 3000
domain: grafana.local
## security
security:
admin_user: admin
admin_password: password
login_remember_days: 1
cookie_username: grafana_admin
cookie_remember_name: grafana_admin
secret_key: hidden
## database
database:
type: rds
host: mydb.us-west-2.rds.amazonaws.com
## session
session:
provider: memory
provider_config: ""
cookie_name: grafana_session
cookie_secure: true
session_life_time: 600

## Grafana data
persistence:
enabled: true
storageClass: "-"
accessModes:
- ReadWriteOnce
size: 1Gi

配置

你可以用helm值来配置Caretta。Helm中的值是图表的设置选项。当图表被安装后,你可以改变一个名为values.yaml的文件中列出的值,该文件是图表包的一部分,并根据手头的需求定制配置。

下面是一个配置覆盖默认值的例子。

pollIntervalSeconds: 15  # set metrics polling interval
tolerations: # set any desired tolerations
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule

config:
customSetting1: custom-value1
customSetting2: custom-value2

victoria-metrics-single:
server:
persistentVolume:
enabled: true # set to true to use persistent volume

ebpf:
enabled: true # set to true to enable eBPF
config:
someOption: ebpf_options

pollIntervalSeconds设置了轮询指标的时间间隔。在我们的例子中,我们将其设置为每15秒轮询一次。

容差部分允许为pod指定容差。在所示的例子中,只允许pod运行在具有
node-role.kubernetes.io/control-plane标签的节点上,并且存在NoSchedule效果。

config部分允许我们为应用程序指定自定义的配置选项。

victoria-metrics-single部分允许我们配置Victoria-metrics-single服务器。在这里,它将持久化卷配置为启用。

eBPF部分允许我们启用eBPF并配置其选项。

用Caretta和Grafana创建一个可视化网络地图

Caretta由两部分组成:"Caretta代理 "和 "Caretta服务器"。集群中的每个节点都运行Caretta Agent Kubernetes DaemonSet,它收集关于集群状态的信息。

你需要将Caretta收集的数据纳入Grafana,以便将其视为网络地图,并生成一个可视化的网络地图。

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: caretta-depoy-test
namespace: caretta-depoy-test
spec:
selector:
matchLabels:
app: caretta-depoy-test
template:
metadata:
labels:
app: caretta-depoy-test
spec:
containers:
- name: caretta-depoy-test
image: groundcover/caretta:latest
command: ["/caretta"]
args: ["-c", "/caretta/caretta.yaml"]
volumeMounts:
- name: config-volume
mountPath: /caretta
volumes:
- name: config-volume
configMap:
name: caretta-config

来自Caretta代理的数据由Kubernetes StatefulSet的Caretta服务器接收,然后将其保存在数据库中。

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: caretta-depoy-test
labels:
app: caretta-depoy-test
spec:
serviceName: caretta-depoy-test
replicas: 1
selector:
matchLabels:
app: caretta-depoy-test
template:
metadata:
labels:
app: caretta-depoy-test
spec:
containers:
- name: caretta-depoy-test
image: groundcover/caretta:latest
env:
- name: DATABASE_URL
value: mydb.us-west-2.rds.amazonaws.com
ports:
- containerPort: 80
name: http

为了实现这一目标,你需要在Grafana中创建一个自定义数据源插件,以连接到Caretta的数据,然后在Grafana中开发可视化,以显示这些数据。

[datasources]
[datasources.caretta]
name = caretta-deploy-test
type = rds
url = mydb.us-west-2.rds.amazonaws.com
access = proxy
isDefault = true

网络地图的定制选项以及如何访问它们

Caretta和Grafana制作的网络地图可以以多种方式进行定制。我们可以定制以下内容。

  • 显示选项:通过显示定制选项,你可以控制地图的布局、厚度,以及连接和设备的颜色。
  • 数据选项:通过数据选项,你可以选择在地图上显示哪些信息,包括警告、性能指标、以及关于你的设备和连接的细节。
  • 警报选项:通过警报选项,你可以被告知任何网络变化或问题,如流量大、性能低下或连接问题。
  • 可视化选项:通过可视化选项,你可以将收集到的数据以一种可理解和有用的方式呈现出来。

通常情况下,你需要使用Grafana仪表板来访问这些和其他定制选项。根据你所运行的Caretta和Grafana的版本以及你的特定设置和需求,你将可以访问不同的选项和设置。

解释和使用可视化网络地图

用Caretta和Grafana制作的可视化网络地图的主要目标是帮助理解网络拓扑结构,识别可能的瓶颈或问题,以及规划和排除网络问题。你必须理解地图的各个组成部分以及它们所代表的含义,以便解释和使用可视化网络地图。

地图上可能显示的一些信息类型有:。

设备:网络的端点,包括服务器、交换机和路由器,都会在地图上显示。

连接:设备之间的连接,如网线、无线连接或虚拟连接,有时可在地图上描绘出连接类型。

数据:性能指标、警报和配置信息将显示在地图上。

使用网络地图来评估你的K8s集群性能的提示

创建一个精心策划的、信息丰富的、可扩展的网络地图比它听起来更有挑战性。但有了适当的工具集,这就变得容易管理了。

我们已经看到了使用Caretta和Grafana可以完成的工作。现在,让我们看看使用网络地图来展示你的Kubernetes集群的性能指标,我们需要考虑什么。

首先,最重要的是了解集群的网络拓扑结构,包括你的服务所运行的物理和虚拟网络。接下来,确保你所使用的网络插件与你的应用程序兼容。最后,定义网络策略,以确保pod之间的通信,控制入口和出口流量,监控和排除故障。了解pod-to-pod通信和pod网络的发生。

总结

将大型系统分解为微服务,使系统分布式,并对其进行协调,这是提高性能和正常运行时间的最遵循的方法。Kubernetes和Docker是这里的市场领导者。

尽管性能很好,但在大规模分布式系统中,可观察性是一个问题。我们需要考虑所有的影响异常值和异常情况,以监测和加强整个系统的最佳性能。新技术使创新和进步变得容易,但也给系统带来了未知的障碍。你需要一个可观察性工具,它可以跟踪所有的网络操作,并以高效和信息丰富的方式呈现。

Grafana是监控领域的领先工具。通过将Caratta,一个开源的网络可视化,和监控工具,与Grafana相结合,我们可以释放出我们基础设施的真正价值。