Kubernetes相關的名詞解釋Container(16)

什么是Container?

在 Kubernetes 中,Container(容器)?是一個核心概念,你可以將鏡像(Image)類比為程序的“源代碼”,而容器是這段“代碼”運行時的進程。例如,一個 nginx:latest 鏡像被運行時,就成為一個正在執行的容器。

容器是隔離的進程(通過 Linux Namespace 和 Cgroups 實現),包含獨立的文件系統(由鏡像提供)、資源限制和運行環境。

Container 的作用

  • 運行應用:容器封裝應用及其依賴,確保環境一致性(開發、測試、生產環境一致)。

  • 資源隔離:通過 Cgroups 限制 CPU、內存等資源,避免進程間沖突。

  • 快速啟停:容器比虛擬機更輕量,秒級啟動和銷毀,適合動態擴縮容。

  • 可移植性:鏡像與容器解耦,使得應用可以跨平臺(云、本地)運行。

Container 與容器運行時的關系

前面提到過容器運行時,比如containerd、docker、CRI-O等。容器運行時(Container Runtime) 是真正管理容器生命周期的組件,負責:

  • 拉取鏡像(如從 Docker Hub)。

  • 創建/銷毀容器(調用底層技術如?runc)。

  • 監控容器狀態(如 CPU 使用率)。

Container 與鏡像的關系

  • 鏡像是靜態模板
    鏡像是一個只讀文件,包含應用代碼、依賴庫、環境變量等(類似“安裝包”)。例如,ubuntu:22.04?鏡像包含一個最小化的 Ubuntu 系統。

  • 容器是動態實例
    容器基于鏡像創建,運行時會在鏡像頂層添加一個可寫層(存儲運行時數據)。多個容器可以共享同一個鏡像(節省資源)。

  • 生命周期

    • 鏡像通過?docker build?或?podman build?生成。

    • 容器通過?kubectl create?或?docker run?啟動,停止后可寫層默認銷毀(除非使用持久化存儲)。

總結圖示

鏡像(Image) → 容器運行時(Container Runtime) → 容器(Container)
? (只讀模板) ? ? ?(containerd/CRI-O/runc) ? ? ? ? (運行時進程 + 可寫層)

Pod?和?Container?的設計哲學

Pod 與業務獨立性的關系

  • Pod 是 Kubernetes 的最小調度單元,但它的核心設計目標不是“一個 Pod 對應一個業務”,而是:
    “一個 Pod 封裝一個或多個緊密耦合的容器,這些容器共享生命周期和資源,共同完成一個業務邏輯單元”。

    • 典型場景

      • 主容器 + Sidecar 容器:例如一個 Web 應用容器(主業務)和一個日志收集容器(Sidecar)。

      • 多容器協作:如一個 Pod 中同時運行應用容器和數據庫代理容器(二者需直接通過?localhost?通信)。

    • 共享資源:Pod 內的容器共享網絡命名空間(同一 IP)、存儲卷(Volume)和 IPC 命名空間(可通過共享內存通信)。

一個 Pod 代表一個邏輯上的“服務實例”,它可能包含多個協作的容器來完成這個實例的功能。

Container 與應用獨立性的關系

Container 是鏡像的運行實例,它的設計目標是:
“一個 Container 封裝一個獨立的進程(應用),遵循單一職責原則”

  • 典型場景

    • 一個容器只運行一個主進程(如 Nginx、MySQL)。

    • 容器之間通過明確接口(如網絡或 Volume)通信,避免內部狀態依賴。

Pod 和 Container 的類比關系

  • Pod 像一臺物理機,而?Container 像這臺機器上運行的進程

    • 同一 Pod 的容器就像同一臺機器上的進程,共享網絡和存儲,通過?localhost?直接通信。

    • 不同 Pod 的容器就像不同機器上的進程,需要通過 Service 或 Ingress 通信。

  • 為什么需要 Pod 這一層?
    因為有些“應用”需要多個進程(容器)緊密協作(例如需要共享本地文件或頻繁本地通信),而容器本身是隔離的,Pod 提供了這種協作的抽象。

實際用例對比

場景正確設計錯誤設計原因
Web 應用 + 日志收集一個 Pod(主容器 + Logstash Sidecar 容器)兩個獨立 PodSidecar 需要共享主容器的日志文件
微服務 A 和 B兩個獨立 Pod(每個 Pod 一個容器)一個 Pod 兩個容器微服務應獨立擴縮容
Nginx + PHP-FPM一個 Pod(Nginx 容器 + PHP 容器)一個容器內運行兩個進程違反單一職責,但需權衡運維復雜度

圖例總結

下面用圖例的方式加深一下容器運行時、容器、pod的關系。

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

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

相關文章

學習設計模式《四》——單例模式

一、基礎概念 單例模式的本質【控制實例數目】; 單例模式的定義:是用來保證這個類在運行期間只會被創建一個類實例;單例模式還提供了一個全局唯一訪問這個類實例的訪問點(即GetInstance方法)單例模式只關心類實例的創建…

零基礎上手Python數據分析 (19):Matplotlib 高級圖表定制 - 精雕細琢,讓你的圖表脫穎而出!

寫在前面 —— 超越默認樣式,掌握 Matplotlib 精細控制,打造專業級可視化圖表 上一篇博客,我們學習了 Matplotlib 的基礎繪圖功能,掌握了如何繪制常見的折線圖、柱狀圖、散點圖和餅圖,并進行了基本的圖表元素定制,例如添加標題、標簽、圖例等。 這些基礎技能已經能讓我…

信奧中的數學

信奧賽的數學大綱 ps:知識點是其他小伙伴分享的,我現在在做一下系列視頻 會逐步更新,希望大家支持喜歡。 1.基礎數學 數論 整數和自然數 素數、合數和因數分解 最大公約數(GCD)和最小公倍數(LCM) 同余和取模運算 歐幾里得算法 擴展歐幾里得算法 中國…

PHP騰訊云人臉核身獲取Access Token

參考騰訊云官方文檔: 人臉核身 獲取 Access Token_騰訊云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授權類型version > 1…

《作用域大冒險:從閉包到內存泄漏的終極探索》

“愛自有天意,天有道自不會讓有情人分離” 大家好,關于閉包問題其實實際上是js作用域的問題,那么js有幾種作用域呢? 作用域類型關鍵字/場景作用域范圍示例全局作用域var(無聲明)整個程序var x 10;函數作用…

為什么Makefile中的clean需要.PHONY

原因一:避免Makefile檢查時間戳 前置知識:makefile在依賴文件沒有改變時不會執行編譯命令 #第一次執行,OK [rootVM-16-14-centos ~]# make g -E main.cc -o main.i g -S main.i -o main.s g -c main.s -o main.o g main.o -o main#第二…

垂直行業突圍:工業軟件在汽車、航空領域的 “破壁” 實踐

在當今科技高速發展的時代,工業軟件已悄然完成從通用工具到垂直行業 “戰略武器” 的蛻變。特別是在汽車與航空這兩大高端制造領域,工業軟件的價值早已超越單純的效率提升,成為關乎核心技術自主可控的關鍵要素,一場圍繞工業軟件的…

07.Python代碼NumPy-排序sort,argsort,lexsort

07.Python代碼NumPy-排序sort,argsort,lexsort 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是NumPy的使用語法。前后每一小節的內容是存在的有:學習and理解的關聯性,希望…

LVDS系列8:Xilinx 7系可編程輸入延遲(一)

在解析LVDS信號時,十分重要的一環就是LVDS輸入信號線在經過PCB輸入到FPGA中后,本來該嚴格對齊的信號線會出現時延,所以需要在FPGA內部對其進行延時對齊后再進行解析。 Xilinx 7系器件中用于輸入信號延時的組件為IDELAYE2可編程原語&#xff0…

AI驅動研發效率在中后臺的實踐

本文探討了AI驅動的中后臺前端研發實踐, 涵蓋設計出碼、接口定義轉換、代碼擬合、自動化測試等多個環節,通過具體案例展示了AI技術如何優化研發流程并提升效率。特別是在UI代碼編寫和接口聯調階段,并提出了設計出碼(Design to Cod…

【Rust 精進之路之第6篇-流程之舞】控制流:`if/else`, `loop`, `while`, `for` 與模式匹配初窺

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:讓代碼“活”起來——指令的流動 在前面的文章中,我們已經掌握了 Rust 的基礎數據類型(標量和復合類型)以及如何通過變量綁定來存儲和命名它們。這相當于我們準備好了程序…

C++ 表達式求值的基礎(四十九)

1. 運算符的分類 1.1 按操作數個數 一元運算符(Unary) 作用于單個操作數: 取地址 &obj解引用 *ptr邏輯非 !b一元加減 x, -x遞增遞減 i, i-- 二元運算符(Binary) 作用于兩個操作數: 算術運算 a b, a …

Three.js + React 實戰系列 : 從零搭建 3D 個人主頁

可能你對tailiwindcss毫不了解,別緊張,記住我們只是在學習,學習的是作者的思想和技巧,并不是某一行代碼。 在之前的幾篇文章中,我們已經熟悉了 Three.js 的基本用法,并通過 react-three-fiber 快速構建了一…

Kotlin實現Android應用保活方案

Kotlin實現Android應用保活優化方案 以下的Android應用保活實現方案,更加符合現代Android開發規范,同時平衡系統限制和用戶體驗。 1. 前臺服務方案 class OptimizedForegroundService : Service() {private val notificationId 1private val channel…

windows拷貝文件腳本

1、新建腳本文件xxx.bat,名字任意,后綴未.bat即可,將以下內容拷貝進去,修改src和des為自己文件的目錄即可。 echo off :: 設置字符集為UTF-8,命令窗口能正確顯示中文字符。 chcp 65001 rem 讀取當前目錄并進入當前目…

Qt 核心庫總結

Qt 核心庫(QtCore) QtCore 是 Qt 框架的基礎模塊,提供非圖形界面的核心功能,是所有 Qt 應用程序的基石。它包含事件循環、信號與槽、線程管理、文件操作、字符串處理等功能,適用于 GUI 和非 GUI 應用程序。本文將從入…

大模型相關面試問題原理及舉例

大模型相關面試問題原理及舉例 目錄 大模型相關面試問題原理及舉例Transformer相關面試問題原理及舉例大模型模型結構相關面試問題原理及舉例注意力機制相關面試問題原理及舉例大模型與傳統模型區別 原理:大模型靠海量參數和復雜結構,能學習更復雜模式。傳統模型參數少、結構…

【AI+HR實戰應用】用DeepSeek提升HR工作效能

用DeepSeek提升HR工作效能 一、AI 與 AIGC 簡介二、DeepSeek 介紹三、使用 DeepSeek 的渠道及硬件要求四、使用 DeepSeek 的核心技巧五、AI 在人力資源的應用場景六、AI 繪畫與多模態應用七、個人使用 AI 的能力層級八、企業擁抱 AI 的策略九、提示詞管理的重要性 一、AI 與 AI…

Postgresql幾個常用的json操作

將行記錄轉為jsonb row_to_json(表名或別名)將行記錄集轉為json數組 (jsonb) select json_agg(row_to_json(t) order by t.task_name) into v_next_taskfrom dyna_flow_task t where t.zidv_template_id and t.levelv_next_level ;訪問json字段,用->…

ESP32學習與快速總結——5.系統存儲

1.ESP32分區表 為什么ESP32要分區 00:34-- 簡述:其他單片機生成文件少,功能少,而ESP32功能多,文件多 分區表各個文件簡介 --7:31vscode查看分區表 --9:33ota通過idf.py menuconfi…