簡體   English   中英

從容器運行時的角度來看,pod 和容器有什么區別?

[英]What's the difference between pod and container from container runtime's perspective?

Kubernetes 文檔將 pod 描述為一個或多個容器的wrapper器。 在 pod inside運行的容器共享一組命名空間(例如網絡),這讓我認為namespaces是嵌套的(我有點懷疑)。 從容器運行時的角度來看,這里的wrapper是什么?

由於容器只是受namespaces, Cgroups eg Maybe,pod 只是 Kubelet 啟動的第一個container ,容器的 rest 是由命名空間啟動和分組的。

主要區別在於網絡,網絡命名空間由同一個 Pod 中的所有容器共享。 可選地,進程 (pid) 命名空間也可以共享。 這意味着同一個 Pod 中的容器都可以看到同一個localhost網絡(否則它會被其他所有東西隱藏起來,就像 localhost 一樣),並且可以選擇向其他容器中的進程發送信號。

這個想法是 Pod 是一組相關的容器,本身並不是真正的包裝器,而是一組容器,無論出於何種原因都應該始終部署在一起。 通常這是一個主容器,然后是一些提供支持服務(網格路由、日志收集等)的 sidecar。

Pod 只是一組位於同一位置的容器和一個 Kubernetes object。 您可以部署一個pod of containers而不是單獨部署它們。

最佳實踐是,您實際上不應該通過單個容器運行多個進程,這就是 pod 想法出現的地方。 因此,通過運行 pod,您可以將容器組合在一起並將它們編排為單個 object。

pod 中的容器運行相同的網絡命名空間(IP 地址和端口空間),因此您必須小心不要讓兩個進程使用相同的端口空間。 例如,當涉及到文件系統時,這會有所不同,因為容器 fs 來自映像 fs。 文件系統是隔離的,除非它們共享一個卷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM