Kubernetes 监控 是一种有助于主动管理集群的报告形式。监控 Kubernetes 集群 通过跟踪集群资源(包括内存、CPU 和存储)的利用率来简化容器化基础架构的管理。如果所需数量的 pod 未运行、资源利用率接近临界限制,或者故障或配置错误导致 pod 或节点无法参与集群,集群操作员可以监控并接收警报。
监控 Kubernetes 的关键指标是什么?
Kubernetes Metrics Server 聚合从每个节点上的 kubelet 收集的数据,通过 Metrics API 传递,然后可以与许多可视化工具结合使用。要考虑跟踪的一些关键指标包括:
- 集群状态指标,包括 pod 的运行状况和可用性。
- 节点状态,包括就绪、内存、磁盘或处理器过载以及网络可用性。
- Pod 可用性,因为不可用的 pod 可能表示配置问题或设计不良的就绪探针。
- Pod 和节点级别的内存利用率。
- 磁盘利用率 ,包括文件系统和索引节点空间不足。
- CPU 利用率 与分配给 pod 的 CPU 资源量有关。
- API 请求延迟 以毫秒为单位,数字越小延迟越好。
为什么监控 Kubernetes 很重要?
容器在企业级业务中的爆炸式增长为全球的开发人员、DevSecOps 和 IT 团队带来了许多优势。然而,Kubernetes 为部署容器化应用程序带来的灵活性和可扩展性也带来了新的挑战。由于应用程序与其运行的服务器之间不再存在一对一的关联,因此如果没有适当的工具,跟踪应用程序的运行状况(由容器抽象并再次由 Kubernetes 抽象)可能会令人生畏。
你如何监控 Kubernetes 中的容器?
由于 pod 及其容器不断运动并动态调度,因此监控工具依赖于服务作为其端点。服务公开一个可以从 pod 外部访问的 IP 地址,即使创建和删除单个 pod 和容器,服务也可以持续通信。
什么是 Kubernetes 健康?
Kubernetes 节点的健康状况表明节点运行分配给它的 Pod 的能力。Kubernetes 提供了一个节点问题检测器 DaemonSet,它聚合来自节点度量守护进程的问题信息,并将它们发送回 APIserver,报告为节点条件和事件。
什么是Prometheus?
Prometheus 是 CNCF 的一个开源系统,用于收集 Kubernetes 运行状况的指标。Prometheus 在集群中的每个节点上安装数据导出器 Pod,其服务器从节点、Pod 和作业中收集数据。收集到的时序数据保存到数据库中,可以根据预定义的条件自动生成警报。
Prometheus 有自己的仪表板,但功能有限,通过使用 Grafana等外部可视化工具得到了增强,这些工具使用 Prometheus 数据库实现复杂的查询、调试和报告,可以为开发、测试和生产团队量身定制。Prometheus 支持桥接来自其他工具的数据,并且可以连接到广泛的第三方数据库。
什么是 Kubernetes 仪表板?
Kubernetes 仪表板提供了一种使用简单 Web 界面管理集群资源和调试容器化应用程序的方法。Kubernetes 仪表板提供了集群范围内和单个节点上资源的简单概览。它还提供了集群中所有命名空间以及已定义的所有存储类的概要。仪表板的一些用途包括:
- Adminview 列出所有节点和持久存储卷以及每个节点的聚合指标。
- 配置和存储视图 识别每个集群应用程序和集群中运行的所有 Kubernetes 资源的持久卷声明。
- 工作负载视图 列出了按命名空间运行的每个应用程序,包括当前 pod 内存使用情况和部署中当前准备好的 pod 数量。
- Discoverview 列出了已向外部世界公开并已在集群内启用发现的服务。
什么是 Kubernetes Pod 运行状况?
Kubernetes pod 的健康状况有三个衡量标准:活跃度、就绪度和启动条件。它们由 kubelet 管理的探针确定。
liveness 探针确定 pod 中的容器是否需要重新启动。它可以帮助识别 pod 何时变得无响应。
当 pod 中的容器准备好开始处理流量时,就绪探针会向集群指示。仅当 pod 中的所有容器都准备好时,才认为该 pod 已准备就绪。如果 pod 未准备好,它将从服务负载均衡器中删除,并且不会接收传入流量。
启动探针指示 pod 中的应用程序何时成功启动。如果启动探测有效,则活动和就绪探测都将被禁用,直到确保其他探测不会干扰启动过程。
什么是 cAdvisor?
cAdvisor 在集群级别和容器级别收集有关资源使用、历史数据和资源隔离的指标。它的数据收集被用作许多其他指标收集系统的基础技术。
什么是 Kubernetes 应用程序运行状况?
由于 Kubernetes 应用程序始终在应用程序 pod 中运行,因此可以通过各个 pod 中的 liveness 和 readiness 探针来衡量应用程序的健康状况。如果应用程序报告它们已准备好处理新请求,并且它们正在运行的节点没有报告任何错误,则应用程序可能是健康的。