add README_zh-CN.md and roadmap.md

Signed-off-by: Forest-L <lilin@yunify.com>
This commit is contained in:
Forest-L 2021-01-29 15:25:41 +08:00
parent db175c8e90
commit c12d020c3d
2 changed files with 51 additions and 36 deletions

View File

@ -1,15 +1,15 @@
# KubeEye
KubeEye旨在发现Kubernetes上的各种问题比如应用配置错误使用[Polaris](https://github.com/FairwindsOps/polaris))、集群组件不健康和节点问题(使用[Node-Problem-Detector](https://github.com/kubernetes/node-problem-detector))。除了预定义的规则,它还支持自定义规则。
KubeEye 旨在发现 Kubernetes 上的各种问题,比如应用配置错误(使用[Polaris](https://github.com/FairwindsOps/polaris))、集群组件不健康和节点问题(使用[Node-Problem-Detector](https://github.com/kubernetes/node-problem-detector))。除了预定义的规则,它还支持自定义规则。
## 架构图
KubeEye通过调用Kubernetes API通过常规匹配日志中的关键错误信息和容器语法的规则匹配来获取集群诊断数据详见架构。
KubeEye 通过调用Kubernetes API通过常规匹配日志中的关键错误信息和容器语法的规则匹配来获取集群诊断数据详见架构。
![Image](./docs/KubeEye-Architecture.jpg?raw=true)
## 怎么使用
- 机器上安装KubeEye
- 机器上安装 KubeEye
- 从 [Releases](https://github.com/kubesphere/kubeeye/releases) 中下载预构建的可执行文件。
- 或者你也可以从源代码构建
```
@ -18,10 +18,10 @@ KubeEye通过调用Kubernetes API通过常规匹配日志中的关键错误
make install
```
- [可选] 安装 Node-problem-Detector
注意这一行将在你的集群上安装npd只有当你想要详细的报告时才需要。
注意:这一行将在你的集群上安装 npd只有当你想要详细的报告时才需要。
`ke install npd`
- KubeEye执行
- KubeEye 执行
```
root@node1:# ke diag
NODENAME SEVERITY HEARTBEATTIME REASON MESSAGE
@ -58,81 +58,81 @@ kube-system Warning coredns Deployment 2020-11-27T1
```
您可以参考常见[FAQ](https://github.com/kubesphere/kubeeye/blob/main/docs/FAQ.md)内容来优化您的集群。
## KubeEye能做什么
## KubeEye 能做什么
- KubeEye可以发现你的集群控制平面的问题包括kube-apiserver/kube-controller-manager/etcd等。
- KubeEye可以帮助你检测各种节点问题包括内存/CPU/磁盘压力,意外的内核错误日志等。
- KubeEye根据行业最佳实践验证你的工作负载yaml规范帮助你使你的集群稳定。
- KubeEye 可以发现你的集群控制平面的问题,包括 kube-apiserver/kube-controller-manager/etcd 等。
- KubeEye 可以帮助你检测各种节点问题,包括内存/CPU/磁盘压力,意外的内核错误日志等。
- KubeEye 根据行业最佳实践验证你的工作负载 yaml 规范,帮助你使你的集群稳定。
## 检查项
|是/否|检查项 |描述|
|---|---|---|
| :white_check_mark: | ETCDHealthStatus | 如果 etcd 启动并正常运行 |
| :white_check_mark: | ControllerManagerHealthStatus | 如果kubernetes kube-controller-manager正常启动并运行 |
| :white_check_mark: | SchedulerHealthStatus | 如果kubernetes kube-schedule正常启动并运行 |
| :white_check_mark: | ControllerManagerHealthStatus | 如果 kubernetes kube-controller-manager 正常启动并运行 |
| :white_check_mark: | SchedulerHealthStatus | 如果 kubernetes kube-schedule 正常启动并运行 |
| :white_check_mark: | NodeMemory | 如果节点内存使用量超过阈值 |
| :white_check_mark: | DockerHealthStatus | 如果docker正常运行|
| :white_check_mark: | DockerHealthStatus | 如果 docker 正常运行|
| :white_check_mark: | NodeDisk | 如果节点磁盘使用量超过阈值 |
| :white_check_mark: | KubeletHealthStatus | 如果kubelet激活状态且正常运行 |
| :white_check_mark: | NodeCPU | 如果节点CPu使用量超过阈值 |
| :white_check_mark: | KubeletHealthStatus | 如果 kubelet 激活状态且正常运行 |
| :white_check_mark: | NodeCPU | 如果节点 CPU 使用量超过阈值 |
| :white_check_mark: | NodeCorruptOverlay2 | Overlay2 不可用|
| :white_check_mark: | NodeKernelNULLPointer | node 显示NotReady|
| :white_check_mark: | NodeKernelNULLPointer | node 显示 NotReady|
| :white_check_mark: | NodeDeadlock | 死锁是指两个或两个以上的进程在争夺资源时互相等待的现象。|
| :white_check_mark: | NodeOOM | 监控那些消耗过多内存的进程,尤其是那些消耗大量内存非常快的进程,内核会杀掉它们,防止它们耗尽内存|
| :white_check_mark: | NodeExt4Error | Ext4 挂载失败|
| :white_check_mark: | NodeTaskHung | 检查D状态下是否有超过120s的进程|
| :white_check_mark: | NodeTaskHung | 检查D状态下是否有超过 120s 的进程|
| :white_check_mark: | NodeUnregisterNetDevice | 检查对应网络|
| :white_check_mark: | NodeCorruptDockerImage | 检查docker镜像|
| :white_check_mark: | NodeCorruptDockerImage | 检查 docker 镜像|
| :white_check_mark: | NodeAUFSUmountHung | 检查存储|
| :white_check_mark: | NodeDockerHung | Docker hang住, 检查docker的日志|
| :white_check_mark: | PodSetLivenessProbe |如果为pod中的每一个容器设置了livenessProbe|
| :white_check_mark: | NodeDockerHung | Docker hang住, 检查 docker 的日志|
| :white_check_mark: | PodSetLivenessProbe |如果为pod中的每一个容器设置了 livenessProbe|
| :white_check_mark: | PodSetTagNotSpecified | 镜像地址没有声明标签或标签是最新|
| :white_check_mark: | PodSetRunAsPrivileged | 以特权模式运行Pod意味着Pod可以访问主机的资源和内核功能|
| :white_check_mark: | PodSetImagePullBackOff | Pod无法正确拉出镜像因此可以在相应节点上手动拉出镜像|
| :white_check_mark: | PodSetRunAsPrivileged | 以特权模式运行 Pod 意味着 Pod 可以访问主机的资源和内核功能|
| :white_check_mark: | PodSetImagePullBackOff | Pod 无法正确拉出镜像,因此可以在相应节点上手动拉出镜像|
| :white_check_mark: | PodSetImageRegistry | 检查镜像形式是否在相应仓库|
| :white_check_mark: | PodSetCpuLimitsMissing | 未声明CPU资源限制|
| :white_check_mark: | PodSetCpuLimitsMissing | 未声明 CPU 资源限制|
| :white_check_mark: | PodNoSuchFileOrDirectory | 进入容器查看相应文件是否存在|
| :white_check_mark: | PodIOError | 这通常是由于文件IO性能瓶颈|
| :white_check_mark: | PodIOError | 这通常是由于文件 IO 性能瓶颈|
| :white_check_mark: | PodNoSuchDeviceOrAddress | 检查对应网络 |
| :white_check_mark: | PodInvalidArgument | 检查对应存储|
| :white_check_mark: | PodDeviceOrResourceBusy | 检查对应的目录和PID|
| :white_check_mark: | PodDeviceOrResourceBusy | 检查对应的目录和 PID|
| :white_check_mark: | PodFileExists | 检查现有文件|
| :white_check_mark: | PodTooManyOpenFiles | 程序打开的文件/套接字连接数超过系统设置值|
| :white_check_mark: | PodNoSpaceLeftOnDevice | 检查磁盘和索引节点的使用情况|
| :white_check_mark: | NodeApiServerExpiredPeriod | 将检查ApiServer证书的到期日期少于30天|
| :white_check_mark: | PodSetCpuRequestsMissing | 未声明CPU资源请求值|
| :white_check_mark: | PodSetHostIPCSet | 设置主机IP|
| :white_check_mark: | NodeApiServerExpiredPeriod | 将检查 ApiServer 证书的到期日期少于30天|
| :white_check_mark: | PodSetCpuRequestsMissing | 未声明 CPU 资源请求值|
| :white_check_mark: | PodSetHostIPCSet | 设置主机 IP|
| :white_check_mark: | PodSetHostNetworkSet | 设置主机网络|
| :white_check_mark: | PodHostPIDSet | 设置主机PID|
| :white_check_mark: | PodHostPIDSet | 设置主机 PID|
| :white_check_mark: | PodMemoryRequestsMiss | 没有声明内存资源请求值|
| :white_check_mark: | PodSetHostPort | 设置主机端口|
| :white_check_mark: | PodSetMemoryLimitsMissing | 没有声明内存资源限制值|
| :white_check_mark: | PodNotReadOnlyRootFiles | 文件系统未设置为只读|
| :white_check_mark: | PodSetPullPolicyNotAlways | 镜像拉策略并非总是如此|
| :white_check_mark: | PodSetRunAsRootAllowed | 以root用户执行|
| :white_check_mark: | PodDangerousCapabilities | 您在ALL / SYS_ADMIN / NET_ADMIN等功能中有危险的选择|
| :white_check_mark:|PodlivenessProbeMissing|未声明ReadinessProbe|
| :white_check_mark: | PodSetRunAsRootAllowed | 以 root 用户执行|
| :white_check_mark: | PodDangerousCapabilities | 您在 ALL / SYS_ADMIN / NET_ADMIN 等功能中有危险的选择|
| :white_check_mark:|PodlivenessProbeMissing|未声明 ReadinessProbe|
| :white_check_mark: | privilegeEscalationAllowed | 允许特权升级|
| | NodeNotReadyAndUseOfClosedNetworkConnection | http 2-max-streams-per-connection |
| | NodeNotReady | 无法启动ContainerManager无法设置属性TasksAccounting或未知属性 |
| | NodeNotReady | 无法启动 ContainerManager 无法设置属性 TasksAccounting 或未知属性 |
未标注的项目正在开发中
## 添加自定义检查规则
### 添加npd自定义检查规则
### 添加 npd 自定义检查规则
- 安装 NPD 指令 `ke install npd`
- 由kubectl编辑 configmap kube-system/node-problem-detector-config,
- 由 kubectl 编辑 configmap kube-system/node-problem-detector-config,
```
kubectl edit cm -n kube-system node-problem-detector-config
```
- 在configMap的规则下添加异常日志信息规则遵循正则表达式。
- 在 configMap 的规则下添加异常日志信息,规则遵循正则表达式。
### 自定义最佳实践规则
- 准备一个规则yaml例如下面的规则将验证你的pod规范以确保镜像只来自授权的注册处。
- 准备一个规则 yaml例如下面的规则将验证你的 pod 规范,以确保镜像只来自授权的注册处。
```
checks:
imageFromUnauthorizedRegistry: warning

15
docs/roadmap.md Normal file
View File

@ -0,0 +1,15 @@
# KubeEye's RoadMap
KubeEye Roadmap demonstrates a list of open source product development plans, as well as KubeSphere community's anticipation. Obviously, it details the future's direction of KubeEye, but may change over time. We hope that can help you to get familiar with the project plans and vision through the Roadmap. Of course, if you have any better ideas, welcome to filing [Issues](https://github.com/kubesphere/kubeeye/issues).
## v0.1.0
### Feature:
- [x] Core component detection in the cluster, including controller-manager, scheduler, and ETCD exception detection.
- [x] Node detection in the cluster, including Kubelet abnormalities, insufficient machine MEMORY/CPU/IO resources, docker service exceptions.
- [x] Pod detection int the cluster, including pod best practices, pod exceptions information.
- [ ] Support for more fine-grained patrolling, such as slow response
- [ ] Support inspection report export CSV format or HTML file.