成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Inspektor Gadget:云原生時代下的 eBPF 工具鏈框架

云計算 云原生
Hello folks,我是 Luga,今天我們來聊一下云原生生態領域的 eBPF 工具鏈管理框架 - Inspektor Gadget 。

一、何為 Inspektor Gadget ?

 Inspektor Gadget 是一款功能強大的工具集,用于調試和檢查 Kubernetes 資源和應用程序。同時,它提供了一系列工具和小工具,用于管理 Kubernetes Cluster 中的 eBPF 程序的打包、部署和執行。這些 eBPF 程序包括許多基于 BCC 工具的程序,以及專門為 Inspektor Gadget 開發的一些程序。

Inspektor Gadget 的設計目標是簡化 Kubernetes Cluster 的調試和故障排除過程。通過自動將低級內核原語映射到高級 Kubernetes 資源,提供了更直觀、更快速的方式來查找相關信息。基于此,開發人員和運維人員可以更輕松地監視和分析 Kubernetes Cluster 中的應用程序行為。

使用 Inspektor Gadget,我們可以執行各種任務,例如,跟蹤應用程序的系統調用、監視網絡流量、分析容器之間的通信和資源利用情況等。通過與 eBPF 技術的結合,Inspektor Gadget 提供了更深入的洞察力,從而幫助我們更好地理解和解決 Kubernete s環境中的問題。

二、Inspektor Gadget 運行機制

Inspektor Gadget 通常在 Kubernetes Cluster 中作為 DaemonSet 模式部署到每個節點。利用內核的 eBPF(extended Berkeley Packet Filter)輔助程序來監控與每個 Pod 中的用戶空間程序相關的系統調用事件。通過在每個節點上部署 eBPF程序,Inspektor Gadget 能夠捕獲和收集與應用程序行為密切相關的系統調用日志數據。

具體而言,Inspektor Gadget 的 eBPF 程序在內核中運行,并通過監視系統調用事件來收集相關的日志數據。這些事件可以涉及文件訪問、網絡通信、進程管理等與應用程序行為有關的操作。eBPF 程序將這些日志數據存儲在內核的環形緩沖區中。

 Inspektor Gadget 的用戶空間實用程序負責從內核的環形緩沖區中獲取這些日志數據,并將其顯示給用戶。從而使得開發人員和運維人員能夠查看和分析與每個 Pod 中用戶空間程序相關的系統調用的詳細信息,以幫助他們識別潛在的問題、調試應用程序和進行性能優化。

我們來看一下整個拓撲架構設計,具體如下所示:

基于上述拓撲架構,整個處理機制主要涉及如下:

1、Inspektor Gadget 的 eBPF 程序在運行時收集的事件會被寫入一個專門的內核緩沖區。這個緩沖區是為了有效地存儲和管理大量的事件數據。而I nspektor Gadget 的用戶空間組件負責從這個緩沖區中讀取事件,并將其發布到一個稱為 “Stream” 的通道中。

2、Stream 是 Inspektor Gadget 的用戶空間組件使用的一種數據流機制。它允許事件數據以實時或近乎實時的方式進行傳輸和處理。通過將事件發布到 Stream 中,Inspektor Gadget 提供了一種方便的方式來傳遞和處理從 eBPF 程序收集的事件數據。

3、為了展現這些事件數據,Inspektor Gadget 使用了內部的 kubectl exec API 接口。kubectl exec 是 Kubernetes 的一個命令行工具,用于在容器中執行命令。Inspektor Gadget 利用這個 API 接口來與容器中運行的用戶空間組件進行通信,并從 Stream 中獲取事件數據。

4、一旦獲取到事件數據,Inspektor Gadget 的用戶空間組件可以進行各種操作,比如實時顯示事件日志、進行分析或將事件數據發送到其他監控系統。這種集成了 kubectl exec API 接口的方式使得 Inspektor Gadget 的用戶界面更加靈活和可擴展。

針對 Gadget Tracer Manager,作為一個負責管理正在運行的小工具和容器列表的組件,維護了一個記錄當前活動的小工具和容器的清單。每個正在運行的小工具都與一個 eBPF 映射相關聯,該映射中存儲了要跟蹤的容器的掛載命名空間標識符。這些標識符是根據傳遞給小工具的命名空間、標簽、Pod名稱等參數進行填充的。

為了了解當前正在運行的容器,Gadget Tracer Manager 利用 runc-fanotify 技術。監視容器運行時的文件系統活動。通過與 runc-fanotify 集成,Gadget Tracer Manager 能夠獲取有關當前正在運行的容器的信息。

基于上述的這些信息,Gadget Tracer Manager 可以動態地添加或刪除容器到其集合中。這意味著當容器啟動或停止時,Gadget Tracer Manager 能夠相應地更新其管理的容器列表。這種動態管理的能力使得 Gadget Tracer Manager 能夠實時地跟蹤和監控容器的行為。

基于上述的拓撲架構以及鏈路請求,我們可以窺探到,對于 Inspektor Gadget 而言,主要分為四個核心任務,每個任務都由以下包管理:

1、Tracers

基于整個架構角度,Inspektor Gadget 的 Tracers 主要負責從主機收集各種與應用程序行為和系統操作相關的事件的組件,利用 eBPF 技術攔截和記錄進程創建、文件訪問等事件,并將其保存到日志系統中,以供后續分析和檢查。基于對事件的收集和記錄能力為應用程序的調試和優化提供了有價值的數據來源。

2、Container-Collection 

Container-Collection 組件通過追蹤主機中容器的創建和刪除操作,利用容器信息來豐富事件的上下文。通過將容器的元數據與事件相關聯,Inspektor Gadget 能夠提供更豐富和準確的事件分析和診斷功能。基于對容器信息的加工、利用從而使得事件數據更具有可操作性和可理解性。

3、Trace-Collection

而對于 Inspektor Gadget 的 Trace-Collection 組件而言,其主要利用 Container-Collection 提供的容器信息,實現了按容器的過濾和篩選功能。從而使得用戶可以根據容器的標識符或其他屬性,對事件進行個性化的分析和監控。基于容器過濾的能力,增強了 Inspektor Gadget 的靈活性和可定制性。

4、 Columns 

Columns 組件則主要用于創建跟蹤器生成的事件的列表表示。通過解析和格式化事件記錄,并以清晰的列形式呈現,使用戶能夠方便地瀏覽、分析和比較事件的屬性值。這種列表視圖提供了高效的事件導航和分析功能,提升了事件數據的可讀性和可操作性。

三、Inspektor Gadget 運行要求

內核層面

Inspektor Gadget 使用 eBPF 來提供其功能,并根據不同的內核版本和內核配置啟用不同的 eBPF 功能。Inspektor Gadget 依賴于一種編譯-導出運行(CO-RE)方法,并需要 BTF(BPF Type Format)信息來實現。BTF 信息可以從多個來源收集,如果一個來源不可用,它會嘗試另一個來源。

以下是關于每個來源的更詳細說明:

1、內核 BTF:內核編譯時如果啟用了CONFIG_DEBUG_INFO_BTF 選項,它會在 /sys/kernel/btf/vmlinux 路徑下公開 BTF 信息。

2、小工具容器鏡像:Inspektor Gadget 使用 BTFGen 生成一些已知內核版本的 BTF 信息,并將其包含在小工具的容器映像中。

3、BTFHub 下載:如果以上兩個來源都不可用,nspektor Gadget 會嘗試從 BTFHub下載 BTF 信息。

如果內核不支持 CO-RE,建議大家使用舊版本的 Inspektor Gadget(例如 v0.21.0-bcc ),該版本提供基于 BCC(BPF Compiler Collection)的工具。

需要注意的是,所有小工具在運行時都需要滿足以下條件才能正常工作:

1、CONFIG_BPF=y:內核配置選項,需要確保 BPF(Berkeley Packet Filter)功能已啟用。BPF 是一種靈活的內核技術,允許在內核中執行特定的程序來過濾和操作數據包、系統調用等。

2、CONFIG_BPF_SYSCALL=y:內核配置選項,需要確保 BPF 系統調用支持已啟用。BPF 系統調用是用戶空間程序與內核BPF程序之間進行交互的接口,允許用戶空間程序加載和執行 BPF 程序。

3、CONFIG_DEBUG_INFO_BTF=y:這是與 BTF(BPF Type Format)相關的內核配置選項。BTF 是一種調試信息格式,用于描述內核中的數據結構和類型。如果主機內核的 BTF 信息不受 BTFHub 支持(即“無法從 BTFHub 下載”),則需要啟用此選項以確保小工具能夠訪問所需的 BTF 信息。

Kubernetes 平臺層面:

Kubernetes 平臺

支持

Minikube

AKS、EKS、GKS

OpenShift

AWS Fargate、Azure Containers instances、GKE Autopilot.etc

/

容器運行時層面:

編排類型

容器管理

容器運行時

支持

Docker

containerd

runc

Nerdctl

containerd

runc

Kubernetes

containerd

runc

Kubernetes

containerd

wasm

/

Kubernetes

containerd

katacontainers

/

Kubernetes

CRI-O

runc / crun

Kubernetes v1.20+

Podman(root)

Podman

runc / crun

Podman(rootless)

Podman

runc / crun

Only with Podman API

enabled

針對 Inspektor Gadget 的安裝配置,相對來說較為簡單,大家若有興趣,可查閱官方相關文檔。

責任編輯:華軒 來源: 架構驛站
相關推薦

2022-01-14 07:17:39

阿里云云原生經濟

2021-01-13 07:15:41

云原生反向代理網關

2023-06-29 08:38:37

2022-04-19 16:16:35

DevOps云原生容器

2019-09-20 13:37:50

Java云原生Docker

2013-11-01 16:43:54

云計算

2020-07-16 08:05:15

JavaGo

2013-05-08 09:27:27

軟件定義數據中心SDDC混合云

2022-07-26 06:50:02

云原生JavaMicronaut

2021-08-09 11:43:02

容器云原生安全

2023-08-28 16:08:12

2020-08-28 08:29:40

云原生微服務編程

2021-08-23 13:50:46

云原生PaaS

2021-03-23 11:09:36

云計算

2019-07-04 17:28:04

騰訊云云原生開源

2020-10-21 10:04:56

云原生應用架構

2023-11-30 16:42:21

2015-06-04 19:54:02

云端時代桌面云

2018-04-11 09:07:36

云計算

2015-11-24 18:23:03

VMware云計算vSphere
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清视频在线 | 精品一区二区三区日本 | 夜夜夜夜夜夜曰天天天 | 在线中文字幕av | 自拍视频网站 | 日本中文在线 | 99精品在线观看 | 色久在线 | 狠狠躁躁夜夜躁波多野结依 | 国产一区二区三区四区三区四 | 精品一区二区三区在线播放 | 精品久久国产 | 国产久| 亚洲va欧美va天堂v国产综合 | 国产欧美精品 | 国产精品美女久久久久aⅴ国产馆 | 一区二区三区在线 | 欧 | 日韩高清一区 | 亚洲国产精品久久久久 | 国产在线91 | 国产成人精品午夜视频免费 | 精品久| 自拍视频在线观看 | 日韩久久久久久 | 91亚洲精品在线观看 | 久久久激情| 国产一区二区三区高清 | 国产一区二区三区在线看 | 国产二区视频 | 午夜影院在线观看 | 中文字幕一区二区三区精彩视频 | 欧美一级黄视频 | 国产一区二区在线视频 | 久久国产精品视频 | 成人在线免费 | 亚洲iv一区二区三区 | 亚洲欧美视频一区二区 | av一区二区在线观看 | xxxxx黄色片 欧美一区免费 | 国产精品揄拍一区二区 | 久久男人 |