為什麼 sysdig-agent Pod 在 CrashLoopBackOff 僅限私有的 RHCOS 集群上?

虛擬私有雲 RHCOS 工作節點 僅限私人

如果您的群集使用 RHCOS 工作者節點,且沒有外接網際網路存取,ibm-observe 名稱空間中的 sysdig-agent Pod 可能會進入 CrashLoopBackOff 或無法啟動。

在使用 RHCOS 工作者節點的私有集群上,您的 sysdig-agent Pod 在 CrashLoopBackOff 或 ibm-observe 命名空間中啟動失敗。

在安裝或設定 Sysdig 整合後,您可能會看到 sysdig-agent Pods 重複重新啟動且無法變得健康。 檢查 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 Worker 的現有群集上遇到問題,請驗證 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 工作节点限制的详细信息,请参阅 监控群集健康状况。