如何使用 eBPF 增強 Kubernetes 集羣可觀察性?

4 個使用 eBPF 的特定用例

以下是四個特定用例,在這些用例中,它是獲得深度可見性的最佳選擇。

Kubernetes 可觀察性

Kubernetes 是展示 eBPF 可觀察性能力的最佳場所之一。衆所周知,Kubernetes 通過增加或減少 pod 的數量來上下擴展工作負載。Pod 本質上是隨機的,沒有保證的生命週期。因此,在每個 pod 或容器中設置檢測代理可能會在工作負載中引入性能問題,並且由於 pod 會隨機創建和銷燬,因此效果不佳。

使用它,您可以在操作系統級別設置監控並監控 Kubernetes 中發生的所有事情。

動態網絡性能監控

我們已經多次提到 eBPF 如何非常容易地監控和跟蹤 Linux 子系統的內部方面,例如 CPU 使用率、網絡性能等。您可以利用 eBPF 的這一特性來創建網絡性能監控設置。但是,這樣的設置將是靜態的,因爲用於監控網絡的規則是預定義的常量。您仍然可以手動更改它們,但這是一個漫長的過程。

爲了讓這個系統真正動態化,你可以引入 Cilium

https://cilium.io

一個幫助你在 eBPF 中進行規則管理的開源項目。Cilium 可以幫助您逐包分析網絡流量使用情況,並自動調整 eBPF 規則以適應傳入的工作負載需求。您可以利用它來創建真正動態的網絡性能監控設置。

內核跟蹤

重申 eBPF 的工作原理:它允許您在 Linux 內核中運行自定義代碼。由於系統中發生的所有活動都在內核中完成,因此從一個地方跟蹤和跟蹤所有內容變得很容易。您還可以設置要根據系統事件執行的 eBPF 程序。這使您能夠跟蹤圍繞此類事件發生的一切。

這也是實現內核跟蹤的最安全方法之一,因爲所有 eBPF 程序都經過驗證階段,在該階段檢查它們是否存在無限循環和其他錯誤可能性。因此,您可以安全地依賴它來滿足您的內核跟蹤要求。

Pod 級網絡監控

eBPF 最流行的用途之一是在基於 Kubernetes 的系統中監控 Pod 周圍的網絡。由於基於 Kubernetes 的設置可以運行各種應用程序,並且每個應用程序都有自己獨特的基礎鏡像,因此使用傳統方法對其進行檢測非常具有挑戰性。基本操作系統、雲服務器或編碼標準的每個變體都可能需要不同的監控代理。

通過 eBPF 實施網絡監控可以幫助您解決這些問題。此外,您可以在 Linux cgroup 級別執行套接字過濾。eBPF 程序將幫助您獲得粒度信息,否則這些信息只能在 Linux 的 /sys 目錄中訪問。由於您可以通過 eBPF 訪問內核,因此您可以從內核中接收到更詳細的信息以及上下文。

總結

eBPF 是對傳統 BPF 機制的一個很好的補充。它爲您提供了額外的安全優勢,同時實現了傳統 BPF 程序的深度可觀察性優勢。

在本指南中,我們討論瞭如何使用 eBPF 來增強 Kubernetes 中的可觀察性。我們討論了使用 eBPF 相對於傳統 BPF 的一些好處,並提到了一些用例,您可以在其中利用它來獲得最佳結果。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/MixdDovx-jM_6gaL3xYy9A