中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Pause容器理(li)解pod

在(zai)k8s中(zhong)pod是(shi)最小單元(yuan)

pod和容器的關系

pod類似一(yi)個組容(rong)器的集(ji)合,這些(xie)容(rong)器之間共享一(yi)份存儲,網(wang)絡等資源。

一(yi)個pod下面除去(qu)主業務容(rong)(rong)(rong)(rong)器還有一(yi)個容(rong)(rong)(rong)(rong)器:pause容(rong)(rong)(rong)(rong)器。這是一(yi)個特殊的(de)容(rong)(rong)(rong)(rong)器,它又叫infra容(rong)(rong)(rong)(rong)器,是每個pod都會(hui)自(zi)動(dong)創建(jian)的(de)容(rong)(rong)(rong)(rong)器,它不屬于用戶自(zi)定義容(rong)(rong)(rong)(rong)器。

pause容器

pause容器鏡像

使用 docker insepct [CONTAAINER_ID] 查看一下 pause 容(rong)器(qi)的詳情信(xin)息,可以發現(xian) pause 容(rong)器(qi)使用(yong)的鏡像為(wei)

registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6

該鏡像非(fei)常小,只有 484KB,由(you)于它(ta)總是(shi)處(chu)于 Pause (暫時)狀態,所以取名叫 pause。

pod 在 kubelet 的創建過程

  • kubelet 在接收到 pod 的創建指令后,通過容器運行時(如 containerd、CRI-O)創建 POD 沙箱(Sanbox)
  • 運行時首先啟動 pause 容器(infra 容器),該容器十分輕量它幾乎不消耗資源只是長期睡眠
  • 隨后業務容器啟動加入(JoinNamespace 操作)到 pause 容器持有的 namespace 中

pause 容器的作用

它僅作為 namespace 的持(chi)有者,確保業(ye)務容器崩潰不會導致(zhi)整個命名空間崩潰。

為什么需要 pause 容器?

  • 命名空間生命周期管理
    如果沒有pause容器,當業務容器退出時,其持有的命名空間也會被銷毀,導致Pod內其他容器無法穩定共享資源(如網絡)。pause容器作為靜態錨點,確保命名空間持續存在。
  • 資源清理
    當Pod被刪除時,kubelet會先殺死pause容器,從而自動釋放所有關聯的命名空間和資源(避免孤兒進程或殘留資源)。

例如:你在 kubectl exec 到 pod 內部,通過 ip a 看到的地址是由 pause 容器持有的。

它會持有哪些資源?

網絡命名空間(Network Namespace)最核心的資源

這(zhe)是(shi) pause 容器最重(zhong)要的職責。

  • 它是什么?:
    一個完全隔離的網絡堆棧,包括獨立的網卡設備(如 eth0)、IP 地址、端口范圍、路由表和 iptables/Netfiter 規則。
  • 如何持有?:
    pause 容器啟動后,容器運行時會為它創建一個新的網絡命名空間(除非使用 hostNetwork)。CNI 插件隨后被調用、負載在這個命名空間內配置網絡(分配 IP、創建網卡設置路由等)。
  • 為什么重要?:
    所有后續加入該 Pod 的業務容器,都會共享這個由 pause 容器持有的網絡命名空間。因此,整個 Pod 只有一個 IP 地址,所有容器通過 localhost 相互通信,且不會發生端口沖突。

IPC 命名空間(IPC NameSpace)

  • 它是什么?:隔離 System V 進程間通信(IPC)資源和 POSIX 消息隊列。這允許 Pod 內的容器使用共享內存段或信號量等機制進行通信。
  • 如何持有?:如果 Pod 的 spec.shareProcessNamespace 字段未設置或設置為 false,pause 容器會持有一個獨立的 IPC 命名空間供 POD 內容器共享。

PID 命名空間(PID Namespace)-條件性持有

  • 它是什么?:隔離進程 ID 編號空間。不同 PID 命名空間中的進程可以有相同的 PID。
  • 如何持有?:這取決于 pod 配置。
    • 如果 spec.shareProccessNamespace 未設置或者設置為 false(默認),則每個容器包括 pause 自己都有自己的 PId 命名空間。此時 pause 容器不持有共享的 PID 命名空間。
    • 反之 pause 容器會創建一個 Pod 級別的 PID 命名空間。在這個模式下 pause 容器是 PID 1 的進程,所有容器中的進程都是它的子進程,你可以在一個容器中看到 Pod 內所有其它容器的進程。

掛載命名空間(Mount Namespace)- 間接關聯

  • 雖然每個容器都有自己的掛載命名空間以實現文件系統隔離,但 pause 容器通常不直接持有一個共享的掛載命名空間。Pod 級別的存儲(如 emptyDir 卷)是通過在每個容器的命名空間內單獨掛載來實現共享的,而不是通過共享同一個掛載命名空間。

總結

資源類型 是否由 Pause 容器持有? 說明
網絡命名空間 核心職責。持有整個 Pod 的唯一 IP 和網絡棧。
IPC 命名空間 持有 Pod 級別的 IPC 資源,供容器間通信。
PID 命名空間 條件性是 僅在 shareProcessNamespace: true
時持有,成為 PID 1。
掛載命名空間 通常否 每個容器獨立,通過卷(Volume)機制共享存儲。
UTS 命名空間 持有 Pod 的主機名(spec.hostname
)。
用戶命名空間 可能 如果配置了用戶命名空間隔離,它也會是持有者。
posted @ 2025-10-22 14:20  suknna  閱讀(11)  評論(0)    收藏  舉報