为什么开源 KubeEye

Kubernetes 作为容器编排的事实标准,虽然架构优雅功能也非常强大,但是 Kubernetes 在日常运行过程中总会有一些疑难杂症和隐公积金宫崎骏的问题让集群Go管理员和 Yaml 工程师们非常头疼,

  • 基础设施守护进程问题:ntp 服务中断;
  • 硬件问题:如 CPU,内存或磁盘异常;
  • 内核问题:内核死锁,文件系统损坏;
  • 容器运行时问题开源人脸识别系统聚顶科技在线:运行时守护进程无响应;

这样的问题还有很多,并http 404且这些隐性的异常问题对集群的控制面来说是不可见的,因此 Kubernetes 将继续将 Pod 调度到异常的节点,进而造成集群和运行的应用带来非常大的安全与稳定性的风险。

什么是 KubeE开源阅读ye

KubeEye 是一款开源的集群自动巡检工具,旨在发现 Kubernetes 上的各种问题,比如应用配置错误、集群组件不健康和节点问题。KubeEye 使用 Go 语言基于 Polaris 和 Node-Problem-Detector 开发,内置了一系列异常检测规则。除了预定义的规则宫崎骏,它还支持自定义规则。

KubeEye 能做什么

  • 发现与检测 Kjsonpubernetes 集群控制平面的问题,包括 kube-apiserver/kube-controller-manager/etcd 等;
  • 帮助你检测 Kubernetes 的各种节点问题,包括内存/CPU/磁盘压力,意外的内核错宫崎骏误日志等;
  • 根据行业最佳实践验证你工作细胞的工作负载 yaml 规范,帮助你使你的集群稳定。

架构图

KubeEye 通过调用 Kub工商银行ernetes API,通过常规匹配日志中的关键错误信息和容器语法的规则匹配来获取集群诊断json数据格式数据,详见架构。

KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具

内置检查项

是/否 检查项 描述
ETCDHealthStatus 如果 etchttps和http的区别d 启动并正常运行
Controllehttps域名rManagerHealthStatus 如果 kubernetes kube-controller-manager 正常启动并运行
Scheduler公积金Healhttps安全问题thStatus 如果 kubernetes kube-schedule 正常启动并运行
NodeMemory 如果节点内存使用量超过阈值
功夫战警 DockerHealthStatus 如果 docker 正常运行
NodeDisk 如果节点磁盘使用量超过阈值
KubeletHealthStatus 如果 kubelet 激活状态且正常运行
NodeCPU 如果节点 CPU 使用量超过阈值
NodeCorruptOverlay2 O开源阅读verlay2 不可用
NodeKernelNULLPointer node 显示 NotReady
NodeDjson是什么意思eajson是什么意思dlock 死锁是指两个或两个以上的进程在争夺资源时互相等待的现象。
NodeOOM 监控那些消耗过多内存的进程,尤其是那些消耗大量内存非常快的进程,内核会杀掉它们,防止它们耗尽内存
NodeExt4Erjsonpror Ext4 挂载失败
NodeTaskHunghttps认证 检查D状态下是否有超过 120s 的进程
NodeUnregisterNetDevice 检查对应网络
No开源阅读deCorrupthttp代理DockerImage 检查 docker 镜像
Nodhttp://www.baidu.comeAUFSUmountHung 检查存储
NodeDockerHung Docker hang住, 检查 docker 的日志
PodSetLivenessProbe 如果为pod中的每一个容器设置了 livenessProbe
PodSetTagNotSpecified 镜像地址没有声开源阅读明标签或标签是最新
PodSetRunAsPrivileged 以特权模式运行 Podhttpclient 意味着 Pod 可以Go访问主机的资源和内核功能
PodSetImagePullBackOff Pod 无法正确拉出镜像,因此可以在相应节点上手动http协议拉出镜像
PodSetImageRegistry 检查镜像形式是http://www.baidu.com否在相应仓库
PodSetCpuLimitsMissing 未声明 CPU 资源限制
PodNoSuchFileOrDirectory 进入容器查看相应文件是否存在
PodGoIOError 这通常是由于文件 IO 性能瓶颈
json格式怎么打开 PodNoSuchDeviceOrAddress 检查对应网络
PodInvalidArgument 检查对应存储
PodDeviceOrResourcehttps协议Busy 检查对应的目录和 PID
PodFileExists 检查现有公积金文件
PodTooManyOpenFiles 程序打开的文件/套接字连接json格式数超过系统设置值
PodNoSpaceLeftOnDevice 检查磁盘和索引节点的使用情况公积金
json NodeApiServerEx开源众包piredPeriod 将检查 ApiServer 证书的到期日期少于30天
PodSetCpuRequestsMissing 未声httpclient明 CPU 资源请求值
PodSetHostIPCSet 设置主机 IPHTTPS
PodSetHostNetworkSet 设置主机网络
PodHostPhttpclientIDSet 设置主机 PID
PodMemoryRequestsMiss 没有声明内存宫崎骏资源请求值
PodSetHostPorjson数据格式t 设置主机端口
PodSetMemoryLimitsMissing https安全问题有声明内存资源限制开源
PodNotReadOnlyRootFiles 文件系统未设置为只读
PodSetPullPolicyNotAlways 工作细胞像拉策略并非总是如此
PodSetRunAsRootAllowed 以 root 用户执开源节流
PoGodDangerousCapabilities 您在 ALL / SYS_ADMIN / NET_ADMIN 等功能中有危险的选择
PodlivenessPjson是什么意思robeMissing 未声明 ReadijsonpnessProbe
privilegeEsjson数据格式calationAllowed 允许特权升级
NodeNotReadyAndUseOfClosedNetworkConnection http 2-max-stre狗狗币ams开源节流是什么意思是什么-per-connection
NodeNotReady 无法启动 ContainerManager 无法设置属性 TasksAccountinghttps域名 或未知属性

注:未标注的项目正在开发中

怎么使用

  • 机器上安装 KubeEye

    • 从 Releases 中下载预构json是什么意思建的可执行文件。
    • 或者你也可以从源代码构建
    git clone https://github.https安全问题com/kubesphere/kubee开源是什么意思ye.git
    cd kubeeye
    make insjsonptall
    
  • [可选] 安装 Node-problem-Detector

注意:这一行将开源众包在你的集群上安装 npd,只有当你想要详细的报告时才需要。
ke install npd

  • KubeEye 执行自动巡检:
root@node1:# ke diag
NODENAME        SEVERITY     HEARTBEA枸杞TTIME               REASON              MESSAGE
node18          Fahttp 302tal        2020-11-19T10:32:03+08:00   NodeStatusUnknown   Kubelet stopped posting node status.json数组
no开源阅读de19          Fatal        2020-11json-19T10:31:37+08:00   NodeStatusUnknown   Kubelet stopped posting node status.
node2           Fatal        2020-11-19T10:31:14+08:00   NodeStatusUnknown   Kubelet stojson数据格式pped posting node status.
node3           Fatal        2020-11-27T17:36:53+08:00   KubeletNotRea开源节流dy     Container runtime not rejson数组ady: RuntimeReady=false reason:DockerDaemonNotReady message:docker:HTTP f开源节流打一字ailed to get docker version: Canjson格式怎么打开not connect to the Djson数组ocker daemon at unix:开源众包///var/run/doc枸杞ker.sock. Is the docker daemon running?
NAME            SEVERITY     TIM功夫战警E                        MESSAGE
scheduler       Fatal        2020-11-27T17:09:59+08:00   Get http://127.0.0.1:10251/healthgoogleplayz: dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0          Fatal        2020-11-27Thttp 50017:56:37+08:00   Get https://192.168.13.8:2379/health: dial tcp 192.168.13.8:2379: connect: connection refu公积金sed
NAMESPACE       SEVERITY     PODNAME                                          EV开源ENTTIME                   REASON                MESSAGE
defauljson格式t         Warning      node3HTTPS.164b53d23ea79fc7                           202HTTPS0-11-27T17:37:34+08:00   ContainerGCFailed     rpc errogoogler: code = Unknown desc = Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
default         Warning      node3.164b553ca5740aae                           2020-11-27T18:03:31+08:00   FreeDiskSpaceFailed   failed to garbage collect required amount of images. Wanted to free 5399374233 bytes, but freed 416077545 bytes
default         Warning      nginx-b8ffcf679-q4n9v.16491643e6b68cd7           2020-11-2json格式怎么打开7T17:09:24+08:00   Failed                Error: ImagePullBachttps认证kOf开源中国f
default         Warning      node3.164b58开源人脸识别系统聚顶科技在线61e041a60e                           2020-11-27T19:01:09+08:00   SystemOOM             System OOM encountered, victim process: stress, pid: 16713
default         Warning      node3.164b58660f8d4590                           2020-1httpclient1-27T19:01:27+08:00   OOMKilling            Out of memory: Kill procejson是什么意思ss 16711 (stress) score 205http 404 or sacrifice chhttp协议ild Killed process 16711 (stress), UID 0, total-vm:82651http 3026kB, anon-rss:819296kB, file-rss工商银行:0kB, shmem-rss:0kB
insights-agent  Warning      workloads-1606467120.16jsonp4b519ca8c67416            2020-11-27T16:57:05+08:00   DeadlineExceeded开源节流      Job was active longer than specified dead开源中国line
kube-system     Warning      calico-node-zvl9t.164b3dc50580845d               2020-11-27T17:09:35+08:00   DNSConfigForming      Nameserver limits were exceeded, some nameservers have been omitjson格式怎么打开teGod, the applied najson是什么意思meserver line is: 100.64.11.3 1开源中国14.114.114.114 119.29.29.29
kube-system     Warning      kube-proxy-4bnn7.164b3dc4f4c4125d                2020-11-27json解析T17:09:09+08:00   DNSConfigForming      Nameserver limits were exceeded, some nameserverhttpclients have been omitted, the applied nhttp://192.168.1.1登录ameserver line is:jsonp 100.64.11.3 114.114.114.114 119.29.29.29
kube-system     Warning      nodelocaldns-2zbhh.16https协议4b3dc4f42d358b              2020-11-27T17:09:14+08:00   DNSConfigForming      Namehttps安全问题sjson是什么意思erver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 100.64.11.3 114.114.114.114 119.29.29.29
NAMESPACE       SEVERITY     NAME                      KIND         TIME                        MESSAGE
kube-system     Warning      node-problem-detecthttps认证or     DaemonSet    2020-11-27T17:09:59+08:00   [livenessProhttp 404beMissing runAsPrivileged]
kube-system     Warning      calico-node               D开源aemon开源是什么意思Set    2020-11-2googleplay7T17:09:59+08:00   [runAsPrivileged cpuLimitsMissing]
kube-system     Warning      nodelocaldns              DaemonSet    2020-11-27T17:09:59+08:00   [cpuLimitsMissing runAsPrivileged]
default         Warninggoogleplay      nginx                     Deployment   2020-11-27T17:09:59+08:00   [cpuLimitsM功夫战警issing livenessPrhttps认证obeMissing开源 tagNotSpecified]
insightjson文件是干什么的s-agent  Warning      workloads                 CronJob      2020-11-27T17:09:59+08:00   [livenessProbeMissing]
insights-agent  Warning      cronjob-executgoogleplayor          Job          2020-11-27T17:09:59+08:00   [livenhttps和http的区别essProbeMissing]
kube-system     Warning      calico-kubJSONe-controllers   Deployment   2020-11-27T17:09:59+08:00   [cpuLimitsMissing livenessProbeMissing]
kube-system     Warning      coredns                   Deployment   2020-json是什么意思11-27T17:09:59+08:00   [cpuLimitsMissing]

可参考常见 FAQ内容来优化您的集群。

添加自定义检查规则

除了上述预置的巡检项目与规则,KubeEyejsonp 还支持自定枸杞义检查规宫崎骏则,来看个例子:

添加 npd 自定义检查规则

  • 安装 NPD 指令 ke install npd
  • 由 kubectl 编辑 configmap kube-system/node-pjsonroblem-detector-config,
kubectl edit cm -n kube-system node-problem-detector-confi开源节流是什么意思是什么g
  • 在 configMap 的规则下添加异常日志信息,开源节流规则遵循正则表达式。

自定义最佳实践规则

  • 准备一个规则开源人脸识别系统聚顶科技在线 yaml,httpwatch例如,下面的规则将开源阅读验证你的 Pod 规范,以确保镜像只来自授权的注册处。
checks:
imageFromUnajson是什么意思uthorizedRegistry: warning
customChecks:
imageFromUnauthorizedjson数据格式Registry:
promptMessage: When the corresponding ruhttp代理le does not matchttps和http的区别hhttps认证. Show that imJSONage from an unauthorized registry.
category: Images
target: Container
schema:
'$sGoc公积金hema': http://json-schema.org/draft-07/schema
type: object
properties:
imaghttp 404e:
type: stringjsonp
not:
pattern: ^quay.io
  • 将上述规则保存为 yahttps域名ml,例如 rule.yaml

  • rule.yaml 运行 KubeEye。

root:# ke diag -f rule.yaml --kubeconfig ~/.kube/config
NAMESPACE     SEVERITY    NAME                      KIND         TIME                        MESSAGE
default       Warning     nginx                     Deployment   2020-11-27T17:18https域名:31+08:00   [imageFromUnauthorizedRegistry]
kube-system   Warning     node-pro枸杞blem-detector     Da开源人脸识别系统聚顶科技在线emonSet    2020-11https协议-27T17:18:31+08:00   [livenessProbeMissing runAsPrivileged]
kube-system   Warning     calico-node               DaemonSet    2020-11-27T17工商银行:18:31+08:00   [cpuLimitsMissing runAsPhttp 404rivileged]
kubeJSON-system   Warning     calico-kube-controhttps协议llers   Deployment   2020-11-27T17:1HTTP8:31+08:00   [cpuLimitsMissing livenessProbeMissing]
kube-system   Warning     nod枸杞eloc工作细胞aldns              DaemonSet    2020-11-27T17:18:31+08:00   [runAsPrivileghttp 302ed cpuLimitsMissing]
default       Warning     nginx                     Deploymjson是什么意思ent   2020-11-开源中国27T17:18:31+http://www.baidu.com08:00   [livenessProbeMissingJSON cpuLimitsMissing]
kube-system   Warning     coredns                   DepHTTPSloyment   2020-11-27T17:18:31+08:00   [cpjson数据格式uLimitsMissing]

Roadmap

  • 支持更细粒度的巡检项,例如集群响应速度慢
  • 支持对巡检结果生成集群巡检报告
  • 支持集群巡检报告导出为 CGoSV 格式或 HTML 文件

你还希望 KubeEye 提供什么样的特性呢?欢迎来 Github 提交建议或需求~

GitHub 地址:https://github.com/kubesphere/kubeeye

参考公积金链接

KubeEye Release:https://github.com/kubesphere/kubeeye/releases

KubeEye枸杞 FAQ 文档:https://github.cgoogleom/kubesphere/kubeeye/blob/main/docs/FAQ.md

Node-Problem-Detector:htjson解析tps://googlegithub.com/kubernetes/node-problem-detector

关于 KubeSphere

KubeSpheHTTPSre 是在 Kubernhttps认证etes之上构建的容器混合云,提供全栈的IT自开源软件动化运维的能力,简化企业的DevOps工作工作细胞流。

KubeSphere已被Aqara智能http://www.baidu.com家居、本来生活、新浪、中国人保寿险、华夏银行、浦发硅谷银行JSON、四川航空、国药集团、微众银行、紫金保险、Radore、ZaloPay等海内外数千家企业采用。KubeSphere提供了运维友好的向导式操作界面和丰富的企业级功能,包括多云与多集群管理、Kubernetes资源管理、DevOps(CI/CD)、应用生命周期管理、微服务治理(ServiceMesh)、多租户管理、监控日志、告警通知https域名、存储与网络管理、GPUsupgoogleplayport等功能,帮助企业快速构http代理建一个强大和功能丰富的容器云平台。

KubeSphere 官网:https://kuhttps协议besphejson是什么意思re.io/
KubeSphere GitHub:https://github.com/kubespherjsonobjecte/kubesphere

KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具