20250710-2-Kubernetes 集群部署、配置和驗證-網絡組件存在的意義?_筆記

一、網絡組件的作用

1. 部署網絡組件的目的



  • 核心功能:執行kubectl apply -f calico.yaml命令的主要目的是為Kubernetes集群部署網絡組件
  • 必要性:
    • 解決Pod間的跨節點通信問題
    • 建立集群范圍的網絡平面,使所有Pod處于同一網絡層
    • 替代Docker默認的bridge網絡模式
2. 跨主機網絡通信問題



  • 基礎架構:
    • 每臺Docker主機默認使用獨立的bridge網絡
    • 容器獲得172.17.0.0/16網段的隨機IP
  • 通信障礙:
    • 不同主機上的容器可能分配到相同IP(如都獲得172.17.0.2)
    • 容器發出的數據包無法識別目標容器所在宿主機
    • 缺乏跨主機的路由轉發機制
3. 容器IP分配與通信

1)IP沖突問題

  • 沖突機制:
    • 各Docker主機獨立維護IP分配池
    • 默認使用相同網段(172.17.0.0/16)
    • 有概率(約1/65534)分配相同IP
  • 解決方案:
    • 修改Docker的bip參數指定不同子網
    • 例如:節點1配置172.18.0.1/16,節點2配置172.19.0.1/16
2)路由轉發問題
  • 通信障礙:
    • 即使IP不同(如172.17.0.2和172.17.0.3)
    • 容器無法感知目標容器所在宿主機
    • 缺乏跨主機路由表配置
  • 傳統解決方案:
    • 手動配置路由表和iptables規則
    • 維護復雜度隨節點數量指數級增長
    • 需要自行開發自動化管理程序
3)網絡組件作用
  • 核心功能:
    • 統一管理集群IP分配,確保全局唯一
    • 自動維護跨節點路由規則
    • 實現Pod-to-Pod的直接通信
  • 實現原理:
    • 通過BGP協議同步路由信息
    • 使用IPIP隧道或VXLAN封裝數據包
    • 自動響應節點增減事件
4. 網絡組件解決通信問題



  • 核心功能:實現跨主機容器通信和節點與容器間通信,形成扁平化網絡
    • 解決容器間通信需求(如前端調用后端API,后端訪問數據庫容器)
    • 消除IP沖突風險(避免不同主機隨機分配相同IP)
    • 建立路由機制(解決數據包跨主機傳輸路徑問題)
  • 典型場景:當Pod分布在不同節點時,傳統Docker網絡無法直接通信
    • 同節點Pod通過docker0網橋二層通信(類似交換機連接設備)
    • 跨節點通信必須依賴網絡組件建立路由規則
5. 主流網絡組件與CNI接口



  • 組件選型:
    • Flannel:適合小規模開發集群(幾十臺規模)
    • Calico:適合大規模生產集群,提供更精細的網絡策略
  • CNI規范:
    • 本質:Kubernetes制定的容器網絡接口標準(Container Network Interface)
    • 作用:統一第三方網絡組件接入規范,避免K8s團隊單獨適配
    • 特點:組件需符合標準才能被集成(如Flannel/Calico都支持CNI)
  • 部署注意:
    • 網絡組件是K8s核心依賴,未就緒會導致節點NotReady狀態
    • 通常只需部署一個網絡組件(多組件共存需二次開發)
    • Windows節點支持有限,實際生產不建議使用
6. Kubernetes棄用Docker



  • 背景:為解決多容器運行時兼容問題
    • 早期直接集成Docker導致維護成本高
    • 需要支持containerd、CRI-O等其他運行時
  • CRI接口:
    • 容器運行時接口(Container Runtime Interface)
    • 標準化運行時接入方式,dockershim將被逐步淘汰
  • 當前架構:
  • 過渡方案:
    • 推薦直接使用containerd作為運行時
    • 現有Docker環境仍可通過shim層兼容
二、Kubernetes將棄用Docker

1. CRI接口的引入背景

  • 集成問題背景: Kubernetes早期需要解決與多種容器運行時(如Docker)的集成問題,為此社區推出了CRI(Container Runtime Interface)標準接口。
  • 架構演變: 使用Docker作為容器運行時時的架構包含多層調用鏈:kubelet → CRI(dockershim) → dockerd → containerd → shim → runC → container。
2. dockershim的棄用計劃
  • 棄用對象: Kubernetes計劃移除kubelet中的dockershim組件,該組件是專門為適配Docker Engine開發的橋梁程序。
  • 歷史原因:
    • Docker加入K8s生態早于CRI標準制定
    • K8s團隊最初直接為Docker編寫了專用適配器(dockershim)
    • Docker未主動適配后來的CRI標準
3. 棄用的技術原因

  • 性能問題:
    • Docker內部調用鏈復雜:kubelet → dockershim → dockerd → containerd → shim → runC,共4-5層調用
    • 多層封裝導致性能下降約30%,故障率提升且難以排查
  • 安全隱患:
    • Docker會在宿主機創建網絡規則和存儲卷
    • 存在潛在的安全邊界突破風險
  • 維護成本:
    • 保持dockershim組件增加了K8s代碼維護復雜度
    • CRI標準成熟后,專用適配器顯得冗余
4. 影響與替代方案
  • 直接影響:
    • 移除dockershim后,K8s將無法直接使用Docker作為運行時
    • 需要改用已實現CRI接口的運行時(如containerd、CRI-O)
  • 接口標準體系:
    • CRI(容器運行時接口):管理容器生命周期
    • CNI(容器網絡接口):管理網絡組件接入
    • CSI(容器存儲接口):管理存儲卷操作
  • 過渡建議:
    • 生產環境應提前測試containerd等替代方案
    • 注意檢查自定義腳本中對docker命令的依賴
三、知識小結

知識點

核心內容

考試重點/易混淆點

難度系數

Kubernetes網絡組件作用

解決跨主機容器通信問題,實現集群內Pod間網絡互通

區分Calico/Flannel等不同網絡組件的適用場景

????

Docker默認網絡問題

獨立主機分配相同IP段導致容器IP沖突,無法直接跨主機通信

理解Docker默認bridge網絡的局限性

???

網絡組件部署意義

保證IP唯一性 + 自動路由管理 + 扁平化網絡

為什么說手動配置路由表不可擴展

????

CNI規范

Kubernetes制定的網絡插件接口標準,Calico/Flannel都遵循該標準

CNI與CRI(容器運行時接口)的區分

???

Calico核心功能

通過BGP協議實現跨節點路由,支持網絡策略控制

與Flannel的VXLAN方案對比

????

Pod網絡基礎

同節點Pod通過docker0網橋二層通信,跨節點需網絡組件

為什么說Pod是K8s最小調度單位

???

CRI棄用Docker

移除dockershim適配層,要求容器運行時必須支持CRI標準

為什么containerd成為新標準運行時

????

Windows支持現狀

官方支持但生態不完善,生產環境推薦Linux方案

Windows容器與Linux容器的本質差異

???

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

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

相關文章

【牛客刷題】dd愛科學1.0

文章目錄 一、題目介紹1.1 題目描述1.2 輸入描述:1.3 輸出描述:1.4 示例1二、解題思路2.1 核心策略2.2 算法流程2.3 正確性證明三、算法實現四、關鍵步驟解析五、復雜度分析六、正確性驗證七、算法對比7.1 暴力搜索法7.2 動態規劃7.3 三種解法對比分析一、題目介紹 1.1 題目描…

跑步-Java刷題 藍橋云課

目錄 題目鏈接 題目 解題思路 代碼 題目鏈接 競賽中心 - 藍橋云課 題目 解題思路 用數組記錄每個月有多少天,再使用一個int型變量記錄是星期幾,遍歷即可 代碼 import java.util.Scanner; // 1:無需package // 2: 類名必須Main, 不可修改public class Main {public stat…

Qt常用控件之QWidget(二)

Qt常用控件(二)1.window frame2.windowTitle3.windowIcon🌟🌟hello,各位讀者大大們你們好呀🌟🌟 🚀🚀系列專欄:【Qt的學習】 📝📝本篇…

飛算Java AI:專為 Java 開發者打造的智能開發引擎

目錄 一,核心功能 1,智能編碼(AI Coding) 2,AI 驅動測試(AI Testing) 3,智能運維(AIOps) 4,工程化支持 二、注冊與上手:3 分鐘快…

基于開源AI大模型AI智能名片S2B2C商城小程序源碼的私域流量新生態構建

摘要:私域流量并非新生概念,企業持續構建和經營“企業 - 客戶”關系是其持續存在的關鍵,且會隨時代發展自我完善迭代。本文探討了開源AI大模型AI智能名片S2B2C商城小程序源碼在私域流量領域的應用價值。通過分析私域流量發展現狀與挑戰&#…

用 ELK+Filebeat 提高50%問題排查效率,這套方案實測有效!

摘要 在中大型系統中,日志的分布常常讓問題排查變得異常痛苦:每次出錯都要登錄一堆服務器、翻一堆文本,還不一定能找到關鍵線索。為了解決這個問題,ELK(Elasticsearch、Logstash、Kibana)日志聚合平臺應運而…

數據治理到底是什么?搞清這四件事,你就徹底明白了!

目錄 第一件事:數據治理不是做“數據”,是做“管” 第二件事:治理的核心,是“數、責、權”的三角綁定 一是“數”:你到底有哪些數據? 二是“責”:每張表、每個字段是誰負責? 三…

Spring的事務控制——學習歷程

思考:1. 事務是干什么的?2. 事務的特性?3. 事務控制的傳播方式(傳播行為)4. 事務的隔離級別5. 事務是如何實現的?6. 事務的回滾方式7. 事務失效場景回答:1. 事務和鎖,還有版本控制 …

鴻蒙 Secure Boot 全流程解析:從 BootROM 到內核簽名驗證的實戰指南

摘要 隨著智能設備應用的深入,操作系統安全成為設備可信運行的基礎。在物聯網和多終端場景中,一旦系統被惡意篡改,將帶來數據泄露、設備被控等嚴重后果。鴻蒙系統在安全啟動方面設計了完整的機制,從最底層的 Boot ROM 開始逐級校驗…

tailwindCSS === 使用插件自動類名排序

目錄 類如何排序 自定義 實戰應用 .prettierrc package .eslintrc 人們一直在討論在 Tailwind 項目中對實用程序類進行排序的最佳方法。今天,我們很高興地宣布,隨著我們官方 prettier-plugin-tailwindcss 的發布,您終于可以不用為此擔…

數據結構 —— 鍵值對 map

目錄 map的若干操作 1、emplace() 2、find(key) 3、count(key) 4、lower_bound 和 upper_bound 5、erase() 6、empty() 7、降序的map 計蒜客T3603 叫號系統 題意: 解題思路: Code: Leetcode1309 解碼字母到整數映射 題意: 解題…

C++ 性能優化指南

C 性能優化指南(針對 GCC 編譯器,面向高級工程師面試) 代碼優化面試常問點: 如何避免不必要的對象拷貝?為什么要用引用或 std::move?虛函數調用有什么性能開銷?原理解釋: 傳遞對象時…

拼數(字符串排序)

題目描述設有 n 個正整數 a1?…an?,將它們聯接成一排,相鄰數字首尾相接,組成一個最大的整數。輸入格式第一行有一個整數,表示數字個數 n。第二行有 n 個整數,表示給出的 n 個整數 ai?。輸出格式一個正整數&#xff…

【MySQL】函數學習-字符串函數

一、MySQL字符串函數基礎回顧 在MySQL中,字符串函數用于處理文本數據,常見場景包括數據拼接、格式轉換、清洗等。以下是核心函數速覽:函數名作用說明基礎示例(獨立運行)CONCAT(s1,s2)拼接多個字符串SELECT CONCAT(heel…

AI不是“心智的蒸汽機“:重新理解人工智能的本質

當我們談論人工智能時,最常聽到的比喻是"心智的蒸汽機"——一個能夠自動化認知任務的強大工具。但這個比喻可能從根本上誤導了我們對AI真正潛力的理解。 最近,來自科羅拉多大學丹佛分校和肯尼索州立大學的研究團隊發表了一篇論文[1]&#xff0…

免費的AI Logo工具生成的Logo質量怎么樣?我對比了7個AI Logo生成器,設計必備

你嘗試過用 AI 生成 Logo 嗎?在 AI 巨火的今天,什么事情都可以嘗試用 AI 去做。在品牌設計上也是如此,用 AI 做品牌設計、用 AI 做電商海報、用 AI 做包裝設計等等。不知道你用過哪些 AI 工具,哪些是你覺得好用的。今天我們就來研…

計算機基礎:內存模型

專欄導航 上一篇:WIndows 編程輔助技能:格式工廠的使用 回到目錄 下一篇:MFC 第一章概述 本節前言 本來呢,沒想著在單獨的課節中講解內存模型。但是呢,在我寫過的一些個課節中,我發現,內存…

Sigma-Aldrich 細胞培養實驗方案 | 通過Hoechst DNA染色檢測細胞的支原體污染

目標DNA染色(如間接Hoechst染色技術)一種快速的方法,其可在72小時內獲得結果,這相較于通過培養分離檢測支原體所需的4周時間相比是更加有利的。用DNA染色劑對細胞系進行直接染色可在24小時內獲得結果,但會大大降低靈敏…

需求跟蹤深度解析:架構師視角下的全鏈路追溯體系

需求跟蹤(Requirements Traceability)是確保軟件系統從業務目標到代碼實現全程可追溯的核心實踐,尤其在安全關鍵系統(如航空、醫療)中具有強制性要求。一、需求跟蹤的四大核心價值變更影響分析 精確評估需求變更波及范…

《棒球規則介紹》領隊和主教練誰說了算·棒球1號位

Baseball 101|GM vs Manager 到底誰是球隊話事人? ??權力金字塔:誰說了算?General Manager(總經理/GM)球隊建筑師:負責選秀(Draft)、交易球員(Trade&#x…