为什么开源 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数据格式数据,详见架构。
内置检查项
是/否 | 检查项 | 描述 |
---|---|---|
√ | 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