Cilium是一種具有基於EBPF的DataPlane的網絡,可觀察性和安全解決方案。它提供了一個簡單的平面3網絡,具有在本機路由或覆蓋模式下跨越多個群集的能力。它是L7-protocol Aware,可以使用基於身份的安全模型在L3-L7上執行網絡策略,該模型與網絡尋址相關。
Cilium在POD和外部服務之間為流量實現了分佈式負載平衡,並且能夠使用EBPF中有效的哈希表完全替換Kube-Proxy,從而允許幾乎無限的比例。它還支持高級功能,例如集成入口和出口網關,帶寬管理和服務網格,並提供深層的網絡以及安全性可見性和監視。
一種名為EBPF的新的Linux內核技術是Cilium的基礎。它支持EBPF字節碼在各種集成點上的動態插入到Linux內核中,例如:網絡IO,應用程序插座和跟踪點,以實現安全性,網絡和可見性邏輯。 EBPF高效且靈活。要了解有關EBPF的更多信息,請訪問ebpf.io。
Cilium Community為最後三個次要纖毛版本保留了較小的穩定版本。在此之前,來自次要版本的較舊纖毛穩定版本被認為是EOL。
有關新次要版本的升級,請諮詢Cilium升級指南。
下面列出的是積極維護的發行分支以及其最新的補丁發行版,相應的圖像拉標籤及其發行說明:
v1.16 | 2024-11-14 | quay.io/cilium/cilium:v1.16.4 | 發行說明 |
v1.15 | 2024-11-14 | quay.io/cilium/cilium:v1.15.11 | 發行說明 |
v1.14 | 2024-11-14 | quay.io/cilium/cilium:v1.14.17 | 發行說明 |
纖毛圖像分佈於AMD64和AARCH64架構。
從Cilium 1.13.0版本開始,所有圖像均包括軟件材料清單(SBOM)。 SBOM以SPDX格式生成。有關此信息的更多信息,請訪問Cilium SBOM。
為了開發和測試目的,Cilium Community發布了快照,早期釋放候選者(RC)和CI容器圖像,由主分支構建。這些圖像不用於生產。
有關測試新開發版本的升級,請諮詢Cilium升級指南的最新開發構建。
下面列出的是用於測試的分支,以及它們的快照或RC版本,相應的圖像拉標籤及其發行說明,並在適用的情況下:
主要的 | 日常的 | quay.io/cilium/cilium-ci:latest | N/A。 |
v1.17.0-pre.2 | 2024-11-01 | quay.io/cilium/cilium:v1.17.0-pre.2 | 釋放候選筆記 |
能夠保護現代應用程序協議,例如REST/HTTP,GRPC和KAFKA。傳統的防火牆在第3層和第4層運行。在特定端口上運行的協議要么完全被信任或完全阻止。 Cilium提供了過濾單個應用程序協議請求的能力,例如:
允許所有HTTP請求使用方法GET
and path /public/.*
。拒絕所有其他請求。
允許service1
在Kafka主題topic1
和service2
上生產topic1
。拒絕所有其他Kafka消息。
需要HTTP標頭X-Token: [0-9]+
在所有休息呼叫中都存在。
有關如何使用該協議的最新列表,請參見我們文檔中的第7部分策略。
現代分佈式應用程序依賴於諸如應用程序容器之類的技術來促進敏捷性部署並按需擴展。這會導致大量的應用程序容器在短時間內啟動。典型的容器防火牆通過過濾源IP地址和目標端口來確保工作負載。這個概念要求每當群集中的任何地方啟動容器時,所有服務器上的防火牆都必須被操縱。
為了避免這種情況限制規模,纖毛將安全身份分配給共享相同安全策略的應用程序容器組。然後,身份與應用程序容器發出的所有網絡數據包關聯,從而允許在接收節點處驗證身份。使用鍵值商店執行安全身份管理。
基於標籤的安全性是集群內部訪問控制的首選工具。為了確保訪問外部服務和外部服務的訪問,支持傳統的基於CIDR的入口和出口安全策略。這允許將訪問和從應用程序容器限制為特定的IP範圍。
一個簡單的平面3網絡,具有跨越多個簇的能力連接所有應用程序容器。通過使用主機範圍分配器保持IP分配簡單。這意味著每個主機可以分配IP,而無需主機之間的任何協調。
支持以下多節點網絡模型:
覆蓋:基於封裝的虛擬網絡涵蓋所有主機。當前,VXLAN和GENEVE已烘烤,但可以啟用由Linux支持的所有封裝格式。
何時使用此模式:此模式具有最小的基礎架構和集成要求。它幾乎在任何網絡基礎架構上都可以使用,因為唯一的要求是主機之間的IP連接性,通常已經給出。
本機路由:使用Linux主機的常規路由表。該網絡必須能夠路由應用程序容器的IP地址。
何時使用此模式:此模式適用於高級用戶,需要對基礎網絡基礎架構有所了解。此模式與:
本機IPv6網絡
與云網絡路由器結合
如果您已經在運行路由守護程序
Cilium在應用程序容器和外部服務之間為流量實施分佈式負載平衡,並能夠完全替換Kube-Proxy等組件。負載平衡是在EBPF中使用高效的Hashtables實現的,允許幾乎無限的刻度。
對於North-South類型的負載平衡,Cilium的EBPF實現已優化以提高性能,可以將其附加到XDP(Express Data Path),並支持直接服務器返回(DSR)以及Maglev一致的哈希(如果未執行負載平衡操作)在源主機上。
對於東西方類型的負載平衡,Cilium在Linux內核的插座層(例如在TCP Connect Time)中執行有效的服務對背景翻譯,以便可以在較低層中避免每包NAT操作上空空間。
Cilium通過基於EBPF的高效EDT(最早的出發時間)限制速率來實現帶寬管理,以用於流出節點的容器流量。與傳統方法相比,與傳統方法相比,這可以顯著減少用於應用程序的傳輸尾部潛伏期,並避免在多標題NIC下鎖定,例如HTB(層次結構令牌桶)或TBF(令牌桶過濾器),例如帶寬CNI插件中使用的。
獲得可見性和故障排除問題的能力是任何分佈式系統的運行基礎。儘管我們學會了喜歡tcpdump
和ping
等工具,雖然他們總是會在我們心中找到一個特殊的位置,但我們努力為故障排除提供更好的工具。這包括提供的工具:
使用元數據監視事件:刪除數據包時,該工具不僅報告了數據包的源和目標IP,該工具還提供了許多其他信息中發件人和接收器的完整標籤信息。
通過Prometheus導出的指標:通過Prometheus導出關鍵指標,以與您現有的儀表板集成。
哈勃:專門為纖毛編寫的可觀察性平台。它提供服務依賴圖,操作監視和警報以及基於流日誌的應用和安全可見性。
為什麼要纖毛?
入門
建築和概念
安裝纖毛
常見問題
貢獻
伯克利數據包濾鏡(BPF)是最初引入過濾網絡數據包的Linux內核字節碼解釋器,例如用於TCPDUMP和套接字過濾器。最近,BPF指令集和周圍的體系結構已通過其他數據結構(例如哈希表和陣列)進行了重大重新設計用於用C編寫並編譯為BPF說明的程序。內核驗證者確保BPF程序可以安全地運行,並且JIT編譯器將BPF字節碼轉換為特定於CPU架構的特定於本機執行效率的指令。 BPF程序可以在內核中的各個掛鉤點上運行,例如輸入數據包,外發數據包,系統呼叫,KPROBES,UPOBES,TRACEPOINTS等。
BPF在每個新的Linux版本中繼續發展並獲得其他功能。纖毛利用BPF執行核心數據路徑過濾,熔斷,監視和重定向,並且需要任何Linux內核版本4.8.0或更新的BPF功能(最新的當前穩定Linux內核為4.14.x)。
許多Linux發行版,包括CoreOS,Debian,Docker's Linuxkit,Fedora,Opensuse和Ubuntu已經運送內核版本> = 4.8.x.。您可以通過運行uname -a
檢查Linux內核版本。如果您尚未運行最近的內核,請檢查Linux發行的文檔,以了解如何運行Linux內核4.9.x或更高版本。
要閱讀必要的內核版本以運行BPF運行時,請參閱“先決條件”部分。
XDP是進化的進一步步驟,並可以從網絡驅動程序中運行特定的BPF程序,並直接訪問數據包的DMA緩衝區。根據定義,這是軟件堆棧中最早的可能點,可以將程序附加到,以便允許Linux內核網絡數據路徑中的可編程高性能數據包處理器。
有關開發人員的BPF和XDP的更多信息,請參見BPF和XDP參考指南。
要了解有關Cilium的更多信息,其擴展和用例圍繞Cilium和BPF,請查看進一步的讀數部分。
加入Cilium Slack頻道,與Cilium Developers和其他Cilium用戶聊天。這是一個了解纖毛,提出問題並分享您的經驗的好地方。
請參閱特殊興趣小組以獲取所有SIG及其會議時間的列表。
Cilium Developer Community在Zoom上閒逛進行聊天。歡迎大家。
每週,星期三,下午5:00歐洲/蘇黎世時間(CET/CEST),通常相當於PT上午8:00,或美國東部時間上午11:00。會議筆記和縮放信息
每個月的第三個星期三,日本時間上午9:00(JST)。 Apac會議筆記和縮放信息
我們舉辦一個每週的YouTube社區直播,稱為Echo,它(非常寬鬆!)代表EBPF&Cilium Office小時。直播我們,趕上過去的情節,或者前往Echo Repo,讓我們知道您應該涵蓋的主題的想法。
Cilium項目受一組維護者和承諾的約束。我們的治理文件中概述了它們的選擇和管理。
可以在文件用戶中找到cilium項目的採用者列表,這些cilium項目將其部署在生產中及其用例中。
Cilium保持公共路線圖。它對項目的主要優先事項,不同功能和項目的成熟度以及如何影響項目方向提供了高級視圖。
Cilium用戶空間組件根據Apache許可證(版本2.0)獲得許可。 BPF代碼模板是根據公共公共許可證(僅)2.0版(僅)和2條規定BSD許可證的雙重許可(您可以選擇使用任何一個許可證的條款)。