Kubernetes每天可以产生数百万个新指标。监控集群健康状况的一个具有挑战性的方面是筛选这些指标中哪些指标对收集和关注很重要。以下是您应该监控并为其创建警报的12个关键Kubernetes健康指标。您的组织可能略有不同,但这12个是开发企业Kubernetes监控策略的良好起点。崩溃循环崩溃循环是指pod启动、崩溃,然后不断尝试重新启动而无法恢复(它一直在循环中崩溃和重新启动)。发生这种情况时,应用程序无法运行。这可能是由pod中的应用程序崩溃引起的,或者是pod或部署过程中的错误配置引起的,这使得调试崩溃循环非常棘手。当崩溃循环发生时,您需要立即知道发生了什么,以及是否需要采取紧急措施来保持您的应用程序可用。CPU利用率CPU利用率就是节点使用的CPU周期数。监控很重要,原因有二。首先,您不想耗尽应用程序的处理资源。如果应用程序受CPU限制,则需要增加CPU分配或向集群添加更多节点。其次,您不希望CPU闲置。如果CPU使用率一直很低,资源可能会过度分配,可能会浪费开支。磁盘压力磁盘压力是一种情况,表示节点使用过多磁盘空间或使用磁盘空间过快,基于Kubernetes配置中设置的阈值。这对于监控很重要,因为如果应用程序合法地需要更多空间,则可能意味着需要添加更多磁盘空间。否则它可能意味着应用程序行为不当。无论哪种方式,这种情况都需要引起注意。内存压力内存压力是另一种资源状况,表明节点内存不足。类似于CPU资源分配,你不想完全消耗内存资源,但你也不希望过度分配内存资源而浪费成本。这是需要注意的情况,因为它可能表明应用程序中存在内存泄漏。PID压力PID压力是一种罕见的情况,在这种情况下,pod或容器会生成太多进程,导致节点无法获得可用的进程ID。每个节点都有有限数量的进程ID,这些进程ID分布在正在运行的进程中;如果ID耗尽,则无法启动其他进程。Kubernetes允许为Pod设置PID阈值以限制它们执行失控进程生成的能力,而PID压力条件意味着一个或多个Pod已用完其分配的PID,需要进行检查。NetworkUnavailable所有节点都需要网络连接,其状态表示节点的网络连接是否有问题。要么设置不正确(由于路由耗尽或配置错误),要么与硬件的网络连接存在物理问题。作业失败作业的目的是在有限的时间内运行pod,并在完成其预期功能后将其拆除。如果作业由于节点崩溃或重启或资源耗尽而未成功完成,您需要知道该作业已失败。这就是您需要监控作业失败的原因。它们通常并不意味着应用程序无法访问,但如果不加以解决,它们可能会导致问题。PersistentVolumeFailurePersistentVolume是在集群上指定的存储资源,可用作请求它的任何Pod的持久存储。在它们的生命周期中,它们被绑定到一个容器上,然后在不再需要该容器时回收。如果由于某种原因回收失败,那么你需要知道持久化存储有问题。pendingPod的延迟时间是在pod的生命周期内,如果它正在等待被调度到某个节点上,则其状态为“pending”。如果卡在“pending”状态,通常意味着没有足够的资源来调度和部署pod。需要更新CPU和内存分配、删除pod或向集群添加更多节点。部署失败部署用于管理无状态应用程序——Pod是可互换的,不需要能够到达任何特定的单个Pod,只需要特定类型的Pod。需要密切关注部署以确保它们正确完成。最好的方法是确保观察到的Deployment数量与所需的Deployment数量相匹配。如果不匹配,一个或多个Deployment将失败。StatefulSets还没有准备好StatefulSets用于管理有状态的应用程序,其中Pod具有特定的角色并且需要到达其他特定的Pod。而不是像Deployment那样只需要特定类型的Pod。但是,监控是一样的,需要确保观察到的StatefulSets的数量与想要的StatefulSets的数量相匹配。如果不匹配,则一个或多个StatefulSet失败。DaemonSetsarenotreadyDaemonSets用于管理需要在集群中所有节点上运行的服务或应用程序。如果您有要在每个节点上运行的日志收集守护程序或监视服务,则需要使用DaemonSet。监控与Deployment相同:您需要确保观察到的DaemonSet数量与所需的DaemonSet数量相匹配。如果不匹配,一个或多个DaemonSet将失败。结论与Kubernetes的大多数方面一样,监控Kubernetes的健康状况可能是一个复杂且具有挑战性的过程,不容易开始。通过了解最需要关注的高价值健康状况,您至少可以开始制定可以过滤掉集群产生的大量数据“噪音”的策略,并更有信心地解决最重要的问题确保良好的体验。
