在问题发生后才做出反应可能会导致停机。为了在 Google Kubernetes Engine (GKE) 中维护弹性系统,您需要在潜在问题影响用户之前发现这些问题。
您可以使用此页面通过 Cloud Monitoring 主动监控 GKE 环境,方法是跟踪关键性能指标、直观呈现趋势,以及设置提醒来检测错误率上升或资源限制等问题。
此信息对于负责确保 GKE 环境的健康状况、可靠性和效率的平台管理员和运维人员非常重要。它还有助于应用开发者了解其应用在实际条件下的性能、检测部署中的性能下降情况,并获得优化方面的真知灼见。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务。
查看实用指标
GKE 会自动将一组指标发送到 Cloud Monitoring。以下各部分列出了一些最重要的问题排查指标:
如需查看完整的 GKE 指标列表,请参阅 GKE 系统指标。
容器性能和健康状况指标
如果您怀疑特定应用存在问题,不妨先查看这些指标。这些指标有助于您监控应用的健康状况,包括发现容器是否频繁重启、内存不足或受到 CPU 限制的节流。
指标 | 说明 | 对问题排查的重要性 |
---|---|---|
kubernetes.io/container/cpu/limit_utilization |
实例当前使用的 CPU 占 CPU 限额的比例。该值可能大于 1,因为容器可能被允许使用超出其限额的 CPU。 | 识别 CPU 节流。值过高可能会导致性能下降。 |
kubernetes.io/container/memory/limit_utilization |
实例当前使用的内存占内存限额的比例。该值不能超过 1。 | 监控内存不足 (OOM) 错误风险。 |
kubernetes.io/container/memory/used_bytes |
容器实际的内存用量(以字节为单位)。 | 跟踪内存消耗情况,以识别潜在的内存泄漏或内存不足错误风险。 |
kubernetes.io/container/memory/page_fault_count |
按类型(主要和次要)划分的页面错误数。 | 表示内存压力较大。严重缺页中断意味着即使未达到内存限制,系统也会从磁盘读取内存(交换)。 |
kubernetes.io/container/restart_count |
容器的重启次数。 | 通过较高或不断增加的重启次数来提示潜在问题,例如应用崩溃、配置错误或资源耗尽。 |
kubernetes.io/container/ephemeral_storage/used_bytes |
本地临时存储空间用量(以字节为单位)。 | 监控临时磁盘用量,以防止因临时存储空间已满而导致 Pod 被逐出。 |
kubernetes.io/container/cpu/request_utilization |
实例当前使用的 CPU 占请求的 CPU 的比例。该值可能大于 1,因为用量可能超过请求量。 | 识别超额预配或预配不足的 CPU 请求,帮助您优化资源分配。 |
kubernetes.io/container/memory/request_utilization |
实例的当前用量占内存请求量的比例。该值可能大于 1,因为用量可能超过请求量。 | 识别超额预配或预配不足的内存请求,以改进调度并防止出现内存不足错误。 |
节点性能和健康状况指标
如果您需要诊断底层 GKE 基础架构的问题,不妨检查这些指标。这些指标对于了解节点的整体健康状况和容量至关重要,有助于您调查节点是否处于不健康或高压状态,或者节点是否有足够的内存来调度新的 Pod。
指标 | 说明 | 对问题排查的重要性 |
---|---|---|
kubernetes.io/node/cpu/allocatable_utilization |
实例当前使用的 CPU 占可分配 CPU 的比例。 | 指示 Pod 的总 CPU 用量是否致使节点的可用 CPU 资源变得紧张。 |
kubernetes.io/node/memory/allocatable_utilization |
实例当前使用的内存占可分配内存的比例。该值不能超过 1,因为使用的内存不能超过可分配的内存(字节数)。 | 表明节点缺少内存来调度新 Pod 或供现有 Pod 运行,尤其是在值较高时。 |
kubernetes.io/node/status_condition (Beta 版) |
节点状态条件字段中的节点条件。 | 报告节点健康状况,例如 Ready 、MemoryPressure 或 DiskPressure 。 |
kubernetes.io/node/ephemeral_storage/used_bytes |
节点使用的本地临时存储空间(字节数)。 | 通过提供有关临时存储空间用量过高的警告,帮助防止 Pod 启动失败或被逐出。 |
kubernetes.io/node/ephemeral_storage/inodes_free |
本地临时存储空间上的可用索引节点 (inode) 数量。 | 监控可用 inode 的数量。即使有可用的磁盘空间,如果 inode 用尽,仍可能会导致操作停止。 |
kubernetes.io/node/interruption_count (Beta 版) |
中断是指在客户控制相应基础设施的情况下,系统对该基础设施的逐出操作。此指标是按类型和原因细分的当前中断次数。 | 说明了节点为何可能会因系统逐出而意外消失。 |
Pod 性能和健康状况指标
这些指标可帮助您排查 Pod 与其环境(例如网络和存储空间)之间的交互相关的问题。如果您需要诊断启动缓慢的 Pod、调查潜在的网络连接问题或主动管理存储空间以防止因卷已满而导致写入失败,不妨使用这些指标。
指标 | 说明 | 对问题排查的重要性 |
---|---|---|
kubernetes.io/pod/network/received_bytes_count |
Pod 通过网络接收的累计字节数。 | 识别可能表明应用或网络存在问题的异常网络活动(高或低)。 |
kubernetes.io/pod/network/policy_event_count (Beta 版) |
数据平面中检测到的网络政策事件数量的变化。 | 识别由网络政策引起的连接问题。 |
kubernetes.io/pod/volume/utilization |
实例当前使用的卷空间占总卷空间的比例。该值不能大于 1,因为使用的卷空间不能超过可用卷空间总量。 | 通过在利用率较高(接近 1)时发出警告,实现对卷空间的主动管理,避免写入失败。 |
kubernetes.io/pod/latencies/pod_first_ready (Beta 版) |
Pod 端到端启动延迟时间(从 Pod 的“已创建”状态到“就绪”状态),包括映像拉取时间。 | 诊断启动缓慢的 Pod。 |
使用 Metrics Explorer 直观呈现指标
如要直观呈现 GKE 环境的状态,您可以使用 Metrics Explorer 创建基于指标的图表。
如需使用 Metrics Explorer,请完成以下步骤:
在 Google Cloud 控制台中,前往 Metrics Explorer 页面。
在指标字段中,选择或输入要检查的指标。
查看结果并观察一段时间内的任何趋势。
例如,如需调查特定命名空间中 Pod 的内存消耗情况,您可以执行以下操作:
- 在选择指标列表中,选择指标
kubernetes.io/container/memory/used_bytes
,然后点击应用。 - 点击添加过滤条件,然后选择 namespace_name。
- 在值列表中,选择要调查的命名空间。
- 在汇总字段中,依次选择总和 > pod_name,然后点击确定。此设置会为每个 Pod 显示单独的时序线。
- 点击保存图表。
生成的图表会显示每个 Pod 在一段时间内不同时间点的内存用量,有助于您直观地识别内存消耗量异常高或出现激增的任何 Pod。
Metrics Explorer 在构建所需查看的指标方面具有极大的灵活性。如需详细了解 Metrics Explorer 的高级选项,请参阅 Cloud Monitoring 文档中的使用 Metrics Explorer 创建图表。
创建提醒以主动检测问题
如需在出现问题或指标超出特定阈值时收到通知,您可以在 Cloud Monitoring 中设置提醒政策。
例如,如需设置一项提醒政策,以便在超过容器 CPU 限额的 80% 且该状态持续 5 分钟的情况下通知您,请执行以下操作:
在 Google Cloud 控制台中,前往提醒页面。
点击创建政策。
在选择指标框中,过滤
CPU limit utilization
,然后选择以下指标:kubernetes.io/container/cpu/limit_utilization。点击应用。
将添加过滤条件字段留空。此设置会在有任何集群违反阈值限制时触发提醒。
在转换数据部分,执行以下操作:
- 在滚动窗口列表中,选择 1 分钟。此设置意味着 Google Cloud 每分钟会计算一次平均值。
在滚动窗口函数列表中,选择平均值。
这两个设置都会每分钟计算每个容器的 CPU 限额的平均利用率一次。
点击下一步。
在配置提醒部分中,执行以下操作:
- 在条件类型部分,选择阈值。
- 在提醒触发器部分,选择任何时序违反。
- 在阈值位置部分,选择高于阈值。
- 在阈值部分,输入
0.8
。此值表示您要监控的阈值为 80%。 - 点击高级选项。
- 在重新测试窗口列表中,选择 5 分钟。此设置意味着,只有当 CPU 利用率持续 5 分钟以上保持在 80% 以上时,系统才会触发提醒,从而减少因短暂峰值而导致的误报。
- 在条件名称字段中,为条件指定一个描述性名称。
- 点击下一步。
在配置通知并最终确定提醒部分,执行以下操作:
- 在通知渠道列表中,选择您要接收提醒的渠道。如果您没有渠道,请点击管理通知渠道以创建一个渠道。
- 在为提醒政策命名字段中,为政策指定一个清晰的描述性名称。
- 其他所有字段都保留默认值。
- 点击下一步。
检查您的政策,如果一切正常,请点击创建政策。
如需了解创建提醒的其他方式,请参阅 Cloud Monitoring 文档中的提醒概览。
后续步骤
阅读借助 Gemini Cloud Assist 加快诊断速度(本系列的下一页)。
如需了解这些概念的实际应用,请参阅问题排查示例场景。
如需有关解决特定问题的建议,请查看 GKE 的问题排查指南。
如果您在文档中找不到问题的解决方案,请参阅获取支持以获取进一步的帮助,包括以下主题的建议:
- 请与 Cloud Customer Care 联系,以提交支持请求。
- 通过在 StackOverflow 上提问并使用
google-kubernetes-engine
标记搜索类似问题,从社区获得支持。您还可以加入#kubernetes-engine
Slack 频道,以获得更多社区支持。 - 使用公开问题跟踪器提交 bug 或功能请求。