Kubernetes相關的名詞解釋CNI插件(1)

(一)什么是CNI插件?

在 Kubernetes 中,CNI 插件(Container Network Interface Plugin)?是一種用于配置容器網絡接口的標準工具,負責為 Pod 分配網絡資源(如 IP 地址)并建立網絡連接。它是 Kubernetes 網絡模型的核心組件之一。

CNI 定義了一組規范和插件,使得容器運行時(如 Docker、containerd、CRI-O 等)能夠與第三方網絡插件(CNI 插件)通信,從而實現容器網絡的配置和管理。

(二)CNI 的工作原理

CNI 的核心思想是將容器的網絡配置與容器運行時解耦,通過插件機制實現網絡配置的靈活性。CNI 的工作流程可以分為以下幾個步驟:

容器運行時創建網絡命名空間:當 Kubernetes 調度一個 Pod 到某個節點時,容器運行時(如 containerd 或 Docker)會為該 Pod 創建一個新的網絡命名空間。
CNI 插件進行網絡配置:容器運行時會調用 CNI 插件,執行網絡配置操作。CNI 插件負責以下任務:
為容器分配 IP 地址。
設置網絡接口(如虛擬網卡)。
配置路由表和網絡策略。
IPAM 插件分配 IP 地址:CNI 插件通常會使用 IPAM(IP Address Management)插件來為容器分配 IP 地址。IPAM 插件負責管理 IP 地址池,并為每個容器分配唯一的 IP 地址。
啟動容器:網絡配置完成后,容器運行時啟動容器,并將其加入到已配置的網絡命名空間中。

(三)CNI 的核心作用

  1. Pod 網絡配置

    • 當 Pod 被創建時,CNI 插件會自動為 Pod 分配 IP 地址、配置網絡接口(如?veth pair),并確保 Pod 能與集群內其他 Pod、節點或外部網絡通信。

    • 當 Pod 被刪除時,CNI 插件會釋放資源。

  2. 實現 Kubernetes 網絡要求

    • Kubernetes 要求所有 Pod 必須能直接通過 IP 地址相互通信(無需 NAT),無論它們是否在同一節點上。CNI 插件負責實現這一目標。

(四)CNI的配置方式

  • CNI 插件通過 JSON 配置文件(通常位于?/etc/cni/net.d/)定義網絡規則,例如子網、路由、插件類型等。

(五)常見的常見的 CNI 插件有哪些?

  1. Calico

    • 基于 BGP 協議實現高性能網絡,支持網絡策略(NetworkPolicy)。

  2. Flannel

    • 簡單的 Overlay 網絡,使用 VXLAN 或 host-gw 模式。

  3. Cilium

    • 基于 eBPF 技術,提供高性能和高級網絡策略。

  4. Weave Net

    • 自動創建 Mesh 網絡,支持加密通信。

  5. Amazon VPC CNI

    • 在 AWS EKS 中直接為 Pod 分配 VPC IP 地址。

(六)那么安裝Kubernetes?后自帶了CNI插件嗎?

Kubernetes?本身不提供任何內置的 CNI 插件,但它的網絡模型依賴于 CNI 標準。安裝 Kubernetes 后,你需要手動安裝和配置一個 CNI 插件,否則 Pod 可能無法正常分配 IP 地址或通信。

Kubernetes 默認網絡模式(kubenet

  • 如果未安裝 CNI 插件,Kubernetes 會使用內置的?kubenet?網絡插件,但它的功能非常有限:

    • 僅提供基本的網絡連接(依賴節點上的?bridge?和?host-local?CNI 插件)。

    • 需要手動配置節點路由,且不支持跨節點網絡策略(NetworkPolicy)。

    • 大多數生產環境不會使用?kubenet

(七)Microk8s安裝后自帶了CNI插件嗎?

MicroK8s 默認會自帶一個 CNI 插件(具體取決于安裝方式和版本),通常是?Flannel?或?Calico,以確保 Pod 網絡能正常工作。不過,它的行為可能因不同的安裝模式(如?strict?或?classic)而有所不同。

默認情況(非嚴格模式 /?classic
  • MicroK8s 默認啟用?flannel?作為 CNI 插件,提供簡單的 Overlay 網絡(基于 VXLAN)。

  • 安裝后,Pod 會自動獲得 IP 并支持跨節點通信。

嚴格模式(strict
  • 如果以?strict?模式安裝(如 Ubuntu Core 環境),MicroK8s 默認使用?calico(因其支持網絡策略?NetworkPolicy)。

MicroK8s 允許動態啟用/禁用不同的 CNI 插件:

# 切換到 Calico
microk8s enable calico# 切換到 Flannel
microk8s enable flannel# 禁用當前插件
microk8s disable <cni-name>

(八)CNI 插件安裝在哪兒?

CNI 插件安裝在 Node(節點)的主機上,而不是容器內部。它的作用是為主機上的 Pod(容器組)配置網絡接口、分配 IP 地址并管理網絡連接。

為什么 CNI 插件必須安裝在主機上?

  1. 直接操作主機網絡

    • CNI 插件需要創建?veth pair、配置網橋(如?cni0)、管理 iptables 規則等,這些操作需在主機網絡棧中完成。

  2. Pod 網絡初始化時機

    • 當 Pod 啟動時,容器運行時(containerd/CRI-O)?會調用 CNI 插件,而容器運行時本身運行在主機上。

  3. 跨節點通信需求

    • CNI 插件需處理節點間的路由(如 Calico 的 BGP 或 Flannel 的 VXLAN),這些功能依賴主機級配置。

CNI 插件的工作流程(以 Pod 創建為例)

  1. kubelet 收到創建 Pod 的請求,通過 CRI 接口通知容器運行時(如 containerd)。

  2. 容器運行時?先創建 Pod 的沙箱環境(pause 容器),然后調用 CNI 插件。

  3. CNI 插件(如 Calico)從?/etc/cni/net.d/?讀取配置,執行以下操作:

    • 創建?veth pair(一端在 Pod 內,一端在主機上)。

    • 為主機端的?veth?分配 IP 并添加到網橋或路由表。

    • 更新 iptables/ebpf 規則(如需網絡策略)。

  4. 網絡配置完成后,Pod 內的容器共享 pause 容器的網絡命名空間,獲得網絡連接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77531.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2021-11-10 C++蝸牛爬井進3退1求天數

緣由C大一編程題目。-編程語言-CSDN問答 int n 0, t 0;cin >> n;while ((n - 3)>0)n, t;cout << t << endl;

分享一個DeepSeek+自建知識庫實現人工智能,智能回答高級用法。

這個是我自己搞的DeepSeek大模型自建知識庫相結合到一起實現了更強大的回答問題能力還有智能資源推薦等功能。如果感興趣的小伙伴可以聯系進行聊聊&#xff0c;這個成品已經有了實現了&#xff0c;所以可以融入到你的項目&#xff0c;或者畢設什么的還可以去參加比賽等等。 1.項…

動態規劃算法:狀態壓縮

狀態壓縮動態規劃算法 狀態壓縮動態規劃是動態規劃的一種&#xff0c;它通過使用位運算的方式壓縮程序占用的空間&#xff0c;對于可以用來解決一些只有兩個狀態&#xff08;是與否&#xff09;的問題。 多少無益&#xff0c;我們通過下面的一道編程題目來學習這種算法。 題目…

查看matlab函數幫助文檔的方法

方法一&#xff1a;在命令行窗口中使用help命令 方法二&#xff1a;在命令行窗口中使用doc命令 方法三&#xff1a;在幫助文檔中搜索關鍵字

MYSQL初階(暫為自用草稿)

目錄 基本操作 database操作 table操作 數據類型 INT類型 bit類型 FLOAT類型 CHAR類型 DATE類型 SEL類型 表的約束 列約束 NULL DEFAULT PRIMARY KEY UNIQUE KEY 表約束 PRIMARY KEY FOREIGN KEY 其他補充 AUTO_INCREMENT COMMENT ZEROFILL 表的CRUD …

MVC/MVVM 高級應用的深度解析

狀態共享與同步 跨組件狀態管理策略 狀態變更的傳播機制優化 狀態快照與時間旅行調試 狀態持久化 本地存儲策略 狀態序列化與反序列化 與服務端狀態同步 數據綁定進階 雙向綁定優化 臟檢查機制優化 基于Proxy/Object.defineProperty的實現差異 批量更新策略 自定義…

AI 邊緣計算盒子:開啟智能物聯新時代

一、什么是 AI 邊緣計算盒子 AI 邊緣計算盒子是一種集成了高性能芯片、AI 算法和數據處理能力的硬件設備。它部署在數據源的邊緣側&#xff0c;如工廠、商場、交通路口等&#xff0c;能夠在本地進行數據采集、預處理、分析和決策&#xff0c;而無需將所有數據上傳到云端。這種…

LeetCode 5:最長回文子串

1、題目描述 給你一個字符串 s&#xff0c;找到 s 中最長的 回文 子串。 示例 1: 輸入&#xff1a;s "babad" 輸出&#xff1a;"bab" 解釋&#xff1a;"aba" 同樣是符合題意的答案。 示例 2: 輸入&#xff1a;s "cbbd" 輸出&#…

簡易 Python 爬蟲實現,10min可完成帶效果源碼

目錄 準備工作 編寫爬蟲代碼 運行爬蟲 查看結果 遇到的問題及解決 總結 前言和效果 本文記錄了使用 Python 實現一個簡單網頁爬蟲的過程&#xff0c;目標是爬取 quotes.toscrape.com 的名言和作者&#xff0c;并將結果保存到文本文件。以下是完整步驟&#xff0c;包含環境…

【KWDB 創作者計劃】_上位機知識篇---Docker容器

文章目錄 前言1. Docker 容器是什么&#xff1f;隔離性輕量級可移植性可復用性 2. Docker 核心概念鏡像容器倉庫Dockerfile 3. Docker 基本使用(1) 安裝 Docker(2) 容器生命周期管理(3) 鏡像管理(4) 進入容器內部(5) 數據持久化&#xff08;掛載卷&#xff09;(6) 網絡管理 4. …

樹莓派練習

1.守護進程 守護進程含義&#xff1a;守護進程在樹莓派上電后開始運行&#xff0c;斷電后結束運行的進程&#xff0c;即使你的終端退出也不會停止&#xff0c;我們可以手動關閉它 使用nohup創建守護進程 先創建一個c語言文件&#xff08;long_task.c&#xff09; #include …

詳細解釋瀏覽器是如何渲染頁面的?

渲染流程概述 渲染的目標&#xff1a;將HTML文本轉化為可以看到的像素點 當瀏覽器的網絡線程收到 HTML 文檔后&#xff0c;會產生一個渲染任務&#xff0c;并將其傳遞給渲染主線程的消息隊列。在事件循環機制的作用下&#xff0c;渲染主線程取出消息隊列中的渲染任務&#xff0…

java+postgresql+swagger-多表關聯insert操作(九)

入參為json&#xff0c;然后根據需要對多張表進行操作&#xff1a; 入參格式&#xff1a; {"username": "車主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…

JavaSpring 中使用 Redis

創建項目 配置 Redis 服務地址 創建 Controller 類 由于當前只是些簡單的測試代碼&#xff0c;所以就不進行分層了&#xff0c;只創建一個 Controller 來實現 jedis 通過 jedis 對象里的各種方法來操作 Redis 此處通過 StringRedisTemplate 來操作 Redis 最原始提供的類是 Re…

AI文生圖工具推薦

一、AI文生圖技術實現原理 AI文生圖&#xff08;Text-to-Image&#xff09;基于生成對抗網絡&#xff08;GAN&#xff09;或擴散模型&#xff08;Diffusion Model&#xff09;實現&#xff0c;通過深度學習將文本描述轉化為圖像。其核心流程包括&#xff1a; 文本編碼&#xf…

數據結構——快排和歸并排序(非遞歸)

快速排序和歸并排序一般都是用遞歸來實現的&#xff0c;但是掌握非遞歸也是很重要的&#xff0c;說不定在面試的時候面試官突然問你快排或者歸并非遞歸實現&#xff0c;遞歸有時候并不好&#xff0c;在數據量非常大的時候效率就不好&#xff0c;但是使用非遞歸結果就不一樣了&a…

【筆記】網絡安全管理

計算機硬件中,運算器和控制器通常集成在一塊芯片內,一般稱為()。 數據庫DB、數據庫系統DBS、數據庫管理系統DBMS,三者之間的關系是()。 OSI/RM體系結構中的網絡層與TCP/IP體系結構中的()功能相同。 三級系統應按照等保2.0要求采用密碼技術通信過程中數據的()。 …

.net core web api 數據驗證(DataAnnotations)

目錄 一、什么是 DataAnnotations&#xff1f; 二、擴展驗證邏輯&#xff08;自定義驗證器&#xff09; 一、什么是 DataAnnotations&#xff1f; DataAnnotations 是一組特性&#xff08;Attributes&#xff09;&#xff0c;用于在模型類上定義驗證規則。主要用于屬性級別的…

小白從0學習網站搭建的關鍵事項和避坑指南

以下是針對小白從零學習網站搭建時需要注意的關鍵事項和避坑指南&#xff0c;幫助你高效學習、少走彎路&#xff1a; 一、學習路徑注意事項 不要跳過基礎 誤區&#xff1a;直接學習框架&#xff08;如 React、Laravel&#xff09;而忽視 HTML/CSS/JS 基礎。 正確做法&#xff…

深入剖析JavaScript內存泄漏:識別、定位與實戰解決

在JavaScript的世界里&#xff0c;開發者通常不必像使用C那樣手動管理內存的分配和釋放&#xff0c;這得益于JavaScript引擎內置的垃圾回收&#xff08;Garbage Collection, GC&#xff09;機制。然而&#xff0c;這并不意味著我們可以完全忽視內存管理。“自動"不等于&qu…