IBM Cloud Docs
对 IBM Cloud Kubernetes Service 中的应用程序进行故障诊断

对 IBM Cloud Kubernetes Service 中的应用程序进行故障诊断

虚拟私有云 经典基础架构 Satellite

以下步骤可帮助您对集群中的应用程序问题进行故障诊断,并查找应用程序错误或问题的根本原因。

查看 IBM Cloud 的状态

  1. 要查看 IBM Cloud 是否可用,请 检查 IBM Cloud 状态页面
  2. 组件的 Kubernetes Service 元件的过滤器。
  3. 查看 限制和已知问题文档
  4. 有关 IBM Cloud使用的开放式源代码项目中的问题,请参阅 IBM 开放式源代码和第三方策略。 例如,您可以检查 Kubernetes 未解决的问题

获取集群状态和状态并查看常见问题

  1. 列出集群并找到集群的 State

    ibmcloud ks cluster ls
    
  2. 复查集群的 State。 如果群集处于“危急”、“删除失败”或“**警告 **”状态,或长时间处于“待处理”状态。 有关更多信息,请参阅 集群状态

  3. 查看每个工作程序节点的状态。 更多信息,请参阅 工作者节点状态

    ibmcloud ks worker ls -c CLUSTER
    
  4. 查看以下信息以调试或排除工作者节点问题。

收集详细信息并记录问题

记录有关问题的详细信息时,请尽可能具体。 例如,Our app occasionally gets 502 Gateway errors when trying to retrieve transaction logs 无济于事,因为它不是特定的。 在记录问题之前,请确保尽可能缩小问题范围。 记录问题时,请尝试包含以下内容。

环境体系结构
请确保已记录环境体系结构,以便您了解所涉及的组件。 有关更多信息,请参阅 记录环境体系结构
错误消息和组件详细信息。
提供完整的错误消息,并包含有关生成错误的组件的详细信息。 例如,“clusterID ABCDEF 中的所有三个应用程序 pod 在 HTTPS 调用来自全局负载平衡器的 GET /transaction-logs 时偶尔会失败,错误信息为 HTTP 502 Gateway Error: Web server received an invalid response while acting as a gateway or proxy server...”。
连接的源 IP,目标 IP,端口和协议。
例如," Kubernetes 集群中具有 clusterID ABCDEF 的所有三个应用程序 pod。 在尝试向 GLB GET /transaction-logs 时,HTTPS 调用偶尔会失败,并显示错误 源 pod IP 是 172.22.5.10,目标 IP 是 150.40.40.35 端口 433。 该协议为 HTTPS。 其他 pod 也使用此 IP 地址,就像其他两个 GLB IP 150.40.40.55150.40.40.75" 一样。
问题的开始日期,时间和频率。
查看以下信息示例。
  • 此问题将影响大约 2% 的所有连接尝试。
  • 此问题仅发生在 19:00 到 21:00 UTC 之间,在这些时间内,大约会影响 5% 的所有连接尝试。
  • 从 pod 标识 XYZ 连接时发生此问题。 该问题在 10/25/2023 大约 05:30 UTC 时开始。
对已执行的操作进行故障诊断。
记录迄今已尝试的内容以及这些尝试的结果,以帮助进一步缩小问题的范围。

运行测试以在每个组件中进行规则或排除每个组件

  1. 请尝试在完整应用程序流之外重新创建问题。 这可能涉及以下内容。
    • 在单独的系统上或在集群中的测试 pod 中使用 curl 以连接到后端端点或服务,从而规定客户机可能是问题的根源。
    • 尝试从客户机或集群中的测试 pod 连接到已知端点 (例如 www.ibm.com )。 如果已知端点工作一致,但实际应用程序端点不工作,那么这有助于缩小问题的范围。
  2. 请尝试使用测试集群在测试环境中重新创建问题。
    • 如果 无法 在测试集群中重新创建问题,那么可以将测试集群与实际集群之间的差异作为问题的可能来源。
    • 如果 可以 在测试集群中重新创建该集群,那么该集群本身可能没有问题。 此外,您还可以在一个环境中进行测试,以在不影响生产环境的情况下进一步缩小问题的范围。

收集更多数据

一旦知道应用程序流,您看到的特定错误以及该错误的来源,您就可以从所涉及的组件中收集更详细的数据。 这可能包括以下日志。

  • 受影响组件上的 pod 和进程日志。
  • 集群节点日志,例如 syslog/var/log/messages。 对于 IBM Cloud Kubernetes Service,您可以使用诊断和调试工具,也可以直接从节点获取 syslog 和其他日志。
  • 包跟踪信息。 运行 tcpdump 是获取数据包跟踪信息的常用方法。

在 Slack 中联系或查看用户论坛以了解类似问题

  1. 在 Kubernetes Service Slack 中发布帖子。
    • 如果您是外部用户,请在 #general 频道发帖。
  2. 查看 Kubernetes Service help 或 Stack Overflow 等论坛,了解其他用户是否遇到相同的问题。 使用论坛来提问时,请标记您的问题,以便 IBM Cloud 开发团队能看到您的问题。
    • 如果您有关于使用 IBM Cloud Kubernetes Service 开发或部署群集或应用程序的技术问题,请在 Stack Overflow 上发布您的问题,并用 ibm-cloudcontainers 标记您的问题。
    • 有关使用论坛的更多详细信息,请参阅获取帮助

后续步骤

如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。