侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

K8S应该监控哪些指标及原因

Wake
2023-08-18 / 0 评论 / 0 点赞 / 505 阅读 / 1,342 字

Kubernetes 每天可以生成数百万个新指标。监控集群健康状况最具挑战性的方面之一是筛选哪些指标是重要的,需要收集和关注。

1.Crash Loops

crash loops是指 pod 启动、崩溃,然后不断尝试重新启动但不能(它在循环中不断崩溃和重新启动)。当发生这种情况时,应用程序将无法运行。

  • 可能是由 pod 中的应用程序崩溃引起的
  • 可能是由 pod 或部署过程中的错误配置引起的
  • 当发生crash loops时,需要查看日志来解决问题。
  • 可以使用开源组件kube-eventer来推送事件。

2.CPU Utilization

CPU 使用率就是节点正在使用的 CPU 的使用率。出于两个原因进行监控很重要:

  • 应用程序不能使用完应用程序分配的cpu。如果应用程序受 CPU 限制,则需要增加 CPU 分配或者增加pod数量。最终需要增加服务器来解决。
  • 你不希望你的 CPU 坐在那里闲置。如果服务器 CPU 使用率一直很低,可能过度分配了资源并可能浪费金钱。

3.Disk Pressure

  • 如果应用程序合法地需要更多空间,这可能意味着需要添加更多磁盘空间。
  • 应用程序行为异常并以意外的方式过早地填满了磁盘。

4.Memory Pressure

Memory Pressure是另一种资源状况,表明节点内存不足。

  1. 需要注意这种情况,因为这可能意味应用程序中存在内存泄漏。

5.Network Unavailable

所有节点都需要网络连接,Network Unavailable此状态表明节点的网络连接有问题。

  • 要么设置不正确(由于路由耗尽或配置错误),要么与硬件的网络连接存在物理问题。
  • 可以使用开源组件KubeNurse进行集群网络监控

6.Job Failures

作业旨在在有限的时间内运行 Pod,并在完成预期功能后将其释放。

  • 如果作业因节点崩溃或重新启动或资源耗尽而未能成功完成,需要要知道作业失败。
  • 通常并不意味着您的应用程序无法访问,但如果不加以修复,它可能会导致以后会出现问题。
  • 可以使用开源组件kube-eventer来推送事件。

7.Pod Pending Delays

在 pod 的生命周期中,如果它正在等待在节点上进行调度,则其状态为“pending”。如果它停留在“pending”状态,通常意味着没有足够的资源来安排和部署 pod。

  • 将需要更新 CPU 和内存分配、删除 Pod 或向集群添加更多节点。
  • 可以使用开源组件kube-eventer来推送事件。

8.StatefulSets Not Ready

StatefulSets 用于管理有状态的应用程序,其中 Pod 具有特定的角色,需要访问其他特定的 Pod;而不是像部署那样只需要特定类型的 pod。

  • 确保观察到的 StatefulSet 的数量与所需的 StatefulSet 的数量相匹配。如果不匹配,则一个或多个 StatefulSet 失败。
  • 可以使用开源组件kube-eventer来推送事件。

9.DaemonSets Not Ready

DaemonSets 用于管理需要在集群中的所有节点上运行的服务或应用程序。每个节点上运行日志收集守护进程(filebeat)或监控服务,需要使用 DaemonSet。

  • 确保观察到的 DaemonSet 数量与所需的 DaemonSet 数量相匹配。如果不匹配,则一个或多个 DaemonSet 失败。
  • 可以使用开源组件kube-eventer来推送事件。

10.Scheduler Problems

调度器有两个方面值得关注。

  • 应该进行监控,scheduler_schedule_attempts_total{result:unschedulable}因为不可调度 Pod 的增加可能意味着您的集群存在资源问题。
  • 其次,应该使用上述延迟指标之一密切关注调度程序延迟。Pod 调度延迟的增加可能会导致其他问题,也可能表明集群中存在资源问题。

11.Events

除了从 Kubernetes 集群收集数字指标之外,从集群收集和跟踪事件也很有用。集群事件能监控 pod 生命周期并观察重大的 pod 故障,并且观察从集群流出的事件速率可以是一个很好的早期预警指标。如果事件发生率突然或显着变化,则可能表明出现问题。

  • 可以使用开源组件kube-eventer来推送事件。

总结:

与 Kubernetes 的大多数方面一样,监控 Kubernetes 运行状况可能是一个复杂且具有挑战性的过程。很容易不知所措。通过了解最需要关注的高价值的指标,至少可以开始制定一项策略,能够过滤掉集群产生的大量数据噪音,并更有信心解决最重要的问题,以确保良好的体验。

0

评论区