为什么 sysdig-agent pod 在仅私有的 RHCOS 集群上 CrashLoopBackOff?

虚拟私有云 RHCOS 工作节点 仅限私人

如果您的群集使用 RHCOS 工作节点,并且没有出站互联网访问,那么 ibm-observe 命名空间中的 sysdig-agent pod 可能会进入 CrashLoopBackOff 或无法启动。

在使用 RHCOS 工作节点的专用群集上,您的 sysdig-agent pod 位于 CrashLoopBackOff 或在 ibm-observe 命名空间中启动失败。

安装或配置 Sysdig 集成后,您可能会看到 sysdig-agent pod 反复重启,并且无法恢复健康。 检查 pod 日志时,会发现类似以下的错误:

oc -n ibm-observe logs <sysdig-agent-pod> --previous

示例输出:

* Kernel headers not found in /host/lib/modules/5.14.0-427.105.1.el9_4.x86_64/build, continuing anyway
* Loading kernel probe
Error! Your kernel headers for kernel 5.14.0-427.105.1.el9_4.x86_64 cannot be found at /lib/modules/5.14.0-427.105.1.el9_4.x86_64/build or /lib/modules/5.14.0-427.105.1.el9_4.x86_64/source.
* Trying to download precompiled module from https://download.sysdig.com/stable/sysdig-probe-binaries/...
Download of sysdigcloud-probe for version 14.3.2 failed.
curl: (28) Failed to connect to download.sysdig.com port 443: Connection timed out
Cannot load the probe

在 RHCOS 工作节点上,监控代理无法依赖本地内核头,因为 RHCOS 不包含这些头。 在这种情况下,Sysdig 代理会尝试访问 sysdig.com 以获取预编译驱动程序。 在专用群集或没有外部互联网访问的群集中,该过程会失败,代理 pod 可以进入 CrashLoopBackOff。

如果 eBPF 驱动程序未启用,这可能是导致问题的原因之一。 请按照以下步骤诊断并解决问题。

eBPF 现在已在新的 Sysdig 部署中默认启用。 但是,如果您在专用环境中使用 RHCOS 工作人员的现有群集上遇到问题,请验证 eBPF 是否已启用,并在必要时启用它。

验证 Sysdig 代理配置,必要时启用 eBPF 驱动程序。

  1. 检查集群上当前是否启用了 eBPF 驱动程序。

    oc -n ibm-observe get daemonset/sysdig-agent -o jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="SYSDIG_AGENT_DRIVER")].value}'
    
    • 如果输出显示 universal_ebpf,则 eBPF 已经启用。 以下步骤并非必要,执行这些步骤不会造成任何伤害,但无法解决您的问题。 您可能需要调查其他潜在原因。
    • 如果输出为空或显示的值不是 universal_ebpf,则继续下一步以启用 eBPF。
  2. 将 Sysdig 代理驱动程序设置为 universal_ebpf。

    oc -n ibm-observe set env daemonset/sysdig-agent SYSDIG_AGENT_DRIVER=universal_ebpf
    
  3. 重新启动 sysdig-agent pod。

    oc delete pods -l app=sysdig-agent -n ibm-observe
    
  4. 验证是否已创建替换 pod 并返回 Running 状态。

    oc get pods -l app=sysdig-agent -n ibm-observe
    

有关监控 RHCOS 工作节点限制的更多信息,请参阅 监控群集健康状况。