Skip to content

Commit

Permalink
Merge pull request alibaba#10 from BSWANG/main
Browse files Browse the repository at this point in the history
fix markdown lint issues
  • Loading branch information
BSWANG committed Feb 14, 2023
2 parents fb90d2e + f55e3b7 commit 42f6d37
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 55 deletions.
83 changes: 54 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,48 +12,68 @@ English | [简体中文](./README_zh.md)
- [Contact](#contact)
- [License](#license)

# Overview
## Overview

KubeSkoop is a kubernetes networking diagnose tool for different CNI plug-ins and IAAS providers.
KubeSkoop automatic construct network traffic graph of Pod in the Kubernetes cluster,
monitoring and analysis of the kernel's critical path by eBPF, to resolve most of Kubernetes cluster network problems.

## Key Features
### One-Shot Diagnose
* Diagnose in-cluster traffic between Pod,Service,Node and Ingress/Egress Traffic.
* Cover whole linux network stack: Socket,Bridge,Veth,Netfilter,sysctls…
* Support IAAS network probe for cloud providers.
### In-Depth Kernel Monitor
* eBPF seamless kernel monitor
* CO-RE scripts on series kernel by BTF
* export metrics to standard Prometheus metric API
### Network Anomaly Event
* support dozens of anomy scenes recognition
* export anomy event to Grafana Loki

# Quick Start
You can view the full documentation from the [KubeSkoop website](https://kubeskoop.io/).
## One-Shot diagnose persistent network failure
### Install KubeSkoop command
### Key Features

#### One-Shot Diagnose For Network Broken

- Diagnose in-cluster traffic between Pod,Service,Node and Ingress/Egress Traffic.
- Cover whole linux network stack: Socket,Bridge,Veth,Netfilter,sysctls…
- Support IAAS network probe for cloud providers.

#### In-Depth Kernel Monitor

- eBPF seamless kernel monitor
- CO-RE scripts on series kernel by BTF
- export metrics to standard Prometheus metric API

#### Network Anomaly Event

- support dozens of anomy scenes recognition
- export anomy event to Grafana Loki

## Quick Start

You can view the full documentation from the [KubeSkoop.io](https://kubeskoop.io/).

### One-Shot diagnose persistent network failure

#### Install KubeSkoop command

Through `go install` to install KubeSkoop cli:
```

```shell
go install github.com/alibaba/kubeskoop/cmd/kubeskoop
```
### One-Shot Diagnose

#### One-Shot Diagnose

```shell
$ kubeskoop -s 172.18.0.4 -d 10.96.0.10 -p 53 --http # Execute the diagnostic command, specify the src,dst, and use --http to provide the diagnostic result through the local web service
I0118 11:43:23.383446 6280 web.go:97] http server listening on http://127.0.0.1:8080 # After the diagnosis is completed, a link to the diagnosis result will be output
```

Open the diagnosis result `http://127.0.0.1:8080` through browser:
![diagnose_web](/docs/images/intro_diagnose_web.jpg)

## Monitor network jitter and bottlenecks
### Install monitor components
### Monitor network jitter and bottlenecks

#### Install monitor components

The KubeSkoop exporter bundles with Prometheus, Grafana, and Loki
can be quickly deployed in a Kubernetes cluster by following these steps:

```shell
kubectl apply -f https://raw.githubusercontent.com/alibaba/kubeskoop/main/deploy/skoopbundle.yaml
```

Confirm that the installation is complete and obtain access through the following steps:

```shell
# View the status of KubeSkoop exporter
kubectl get pod -n kubeskoop -l app=skoop-exporter -o wide
Expand All @@ -64,25 +84,30 @@ kubectl get service -n kubeskoop prometheus-service -o wide
# Obtain the access entry of the Grafana console, which is exposed by NodePort by default
kubectl get service -n kubeskoop grafana -o wide
```

***Note: skoopbundle.yaml starts with a minimal copy, not suitable for production environments***

### network performance analysis
#### network performance analysis

Open the NodePort Service of grafana on web browser, open the network monitoring page,
and check the water level of each monitor item corresponding to the time point of the performance problem. For example:
![grafana_performance](/docs/images/monitoring.png)

### network jitter & anomy event analysis
#### network jitter & anomy event analysis

Open the NodePort Service of grafana on web browser, open the Loki page,
check the events corresponding to the time point of network jitter and the water level corresponding to the network monitoring page.
![grafana_performance](/docs/images/loki_tracing.png)

# Contributing
## Contributing

Feel free to open issues and pull requests. Any feedback is much appreciated!

# Contact
* DingTalk Group ID(26720020148)
## Contact

- DingTalk Group ID(26720020148)

## License

# License
Most source code in KubeSkoop which running on userspace are licensed under the [Apache License, Version 2.0](LICENSE.md).
Most source code in KubeSkoop which running on userspace are licensed under the [Apache License, Version 2.0](LICENSE.md).
The BPF code in `/bpf` directory are licensed under the [GPL v2.0](bpf/COPYING) to compat with Linux kernel helper functions.
52 changes: 26 additions & 26 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,49 +12,49 @@
- [联系](#联系方式)
- [License](#license)

# 总览
## 总览

KubeSkoop是一个Kubernetes网络诊断工具。针对不同的网络插件和IaaS提供商自动构建Kubernetes集群中Pod的网络访问图,结合eBPF对内核关键路径的深度监控和分析,来分析常见的Kubernetes集群网络问题。显著地简化了Kubernetes网络问题的诊断难度。

## 关键特性
### 关键特性

### 一键诊断网络链路
#### 一键诊断网络链路

* 诊断kubernetes集群中各种网络访问方式和链路:Pod,Service,Node以及Ingress/Egress Traffic.
- 诊断kubernetes集群中各种网络访问方式和链路:Pod,Service,Node以及Ingress/Egress Traffic.

* 覆盖完整的Linux协议栈的配置错误场景: Socket,Bridge,Veth,Netfilter,sysctls…
- 覆盖完整的Linux协议栈的配置错误场景: Socket,Bridge,Veth,Netfilter,sysctls…

* 支持诊断多种云供应商的IaaS层网络错误配置
- 支持诊断多种云供应商的IaaS层网络错误配置

### 深度网络监控
#### 深度网络监控

* 通过eBPF实现无侵入的Kernel Montor
- 通过eBPF实现无侵入的Kernel Montor

* 通过BTF在各种版本的Kernel上直接运行
- 通过BTF在各种版本的Kernel上直接运行

* 通过标准的Prometheus接口暴露深度监控Metrics
- 通过标准的Prometheus接口暴露深度监控Metrics

### 网络异常事件识别
#### 网络异常事件识别

* 数十种网络异常场景的自动分析识别
- 数十种网络异常场景的自动分析识别

* 通过Grafana Loki展示网络异常事件
- 通过Grafana Loki展示网络异常事件

# 快速开始
## 快速开始

完整的文档可以直接访问[KubeSkoop网站](https://kubeskoop.io/)
完整的文档可以直接访问[KubeSkoop.io](https://kubeskoop.io/)

## 诊断网络不通问题
### 诊断网络不通问题

### 诊断命令安装
#### 诊断命令安装

通过`go install`来安装KubeSkoop的诊断客户端:

```shell
go install github.com/alibaba/kubeskoop/cmd/kubeskoop@latest
```

### 一键诊断
#### 一键诊断

```shell
$ kubeskoop -s 172.18.0.4 -d 10.96.0.10 -p 53 --http # 执行诊断命令,通过src,dst指定源地址和目的地址,使用--http通过本地web服务展示诊断结果
Expand All @@ -64,9 +64,9 @@ I0118 11:43:23.383446 6280 web.go:97] http server listening on http://127.0.0
通过浏览器打开`http://127.0.0.1:8080`后可以看到诊断结果:
![diagnose_web](/docs/images/intro_diagnose_web.jpg)

## 诊断网络抖动和网络性能问题
### 诊断网络抖动和网络性能问题

### 安装网络监控组件
#### 安装网络监控组件

通过以下步骤,可以在Kubernetes集群中快速部署Skoop exporter及其与Prometheus,Grafana和Loki构成的可观测性组合:

Expand All @@ -89,25 +89,25 @@ kubectl get service -n kubeskoop grafana -o wide

***备注: skoopbundle.yaml以最小副本方式启动,不适用于生产环境***

### 查看网络抖动和性能分析
#### 查看网络抖动和性能分析

打开Grafana的Service访问入口,打开网络监控的页面,查看对应性能问题时间点的各深度指标的水位情况。例如:
![grafana_performance](/docs/images/monitoring.png)

### 网络抖动事件
#### 网络抖动事件

打开Grafana的Service访问入口,打开Loki的页面,查看对应网络抖动时间点对应的事件,以及网络监控页面对应的水位情况。
![grafana_performance](/docs/images/loki_tracing.png)

# 贡献说明
## 贡献说明

欢迎提交issue和PR来共建此项目。

# 联系方式
## 联系方式

* 钉钉群号 (26720020148)
- 钉钉群号 (26720020148)

# License
## License

Most source code in KubeSkoop which running on userspace are licensed under the [Apache License, Version 2.0](LICENSE.md).
The BPF code in `/bpf` directory are licensed under the [GPL v2.0](bpf/COPYING) to compat with Linux kernel helper functions.

0 comments on commit 42f6d37

Please sign in to comment.