Pod是Kubernetes中非常重要的概念,也是Kubernetes管理的基本單位。正如其名,Pod像一個豌豆莢,可以容納多個container,擁有相同的IP地址。
Kubernetes使用Pod,不直接使用container。而Container的技術本質是Linux namespace和 cgroup。namespace提供進程間資源的隔離,讓進程自認為擁有獨立的全部資源;而實質上進程是能夠使用多少資源,則由cgroup進行限制。
現在,Pod要容納多個Container,必然要共享資源。前面我們知道,Container想要擁有獨立的資源,對Linux資源進行了拆分,而今因為Pod的提出,又需要將某些資源共享起來,也就是在原來的隔離環境中再整合在一起。
那么,在Pod中如何進行資源的共享呢?
Pod引入了pause容器。
root@k8s:/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa5d3554b60d 404fc3ab6749 "/opt/bin/flanneld -a|" 27 hours ago Up 27 hours k8s_kube-flannel_kube-flannel-ds-th8cd_kube-system_322a7b3b-01b3-4902-9ac8-f14ed2eecec6_0
f1f6cbfce9c4 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 27 hours ago Up 27 hours k8s_POD_kube-flannel-ds-th8cd_kube-system_322a7b3b-01b3-4902-9ac8-f14ed2eecec6_0
de1d18ca0405 b46c42588d51 "/usr/local/bin/kubea|" 28 hours ago Up 28 hours k8s_kube-proxy_kube-proxy-9rjpc_kube-system_bd7d444b-20e3-4e4a-ab9e-8af4dce6b47a_0
a60b297d572d registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 28 hours ago Up 28 hours k8s_POD_kube-proxy-9rjpc_kube-system_bd7d444b-20e3-4e4a-ab9e-8af4dce6b47a_0
c14bff92e79b b6d7abedde39 "kube-apiserver --ada|" 28 hours ago Up 28 hours k8s_kube-apiserver_kube-apiserver-master_kube-system_d6f2f822def6f57249e6789960cadda9_0
77fb48469b2b f51846a4fd28 "kube-controller-mana|" 28 hours ago Up 28 hours k8s_kube-controller-manager_kube-controller-manager-master_kube-system_85ff8159d8c894c53981716f8927f187_0
db450e4928f8 25f8c7f3da61 "etcd --advertise-cla|" 28 hours ago Up 28 hours k8s_etcd_etcd-master_kube-system_1d7ec9e1c409f497753e8635eb01ed02_0
00383cb94409 71d575efe628 "kube-scheduler --aua|" 28 hours ago Up 28 hours k8s_kube-scheduler_kube-scheduler-master_kube-system_77a51208064a0e9b17209ee62638dfcd_0
e8f4474d43bf registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 28 hours ago Up 28 hours k8s_POD_kube-controller-manager-master_kube-system_85ff8159d8c894c53981716f8927f187_0
ba10a2d6709f registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 28 hours ago Up 28 hours k8s_POD_etcd-master_kube-system_1d7ec9e1c409f497753e8635eb01ed02_0
c1250096678e registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 28 hours ago Up 28 hours k8s_POD_kube-apiserver-master_kube-system_d6f2f822def6f57249e6789960cadda9_0
06a9cd375a35 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 28 hours ago Up 28 hours k8s_POD_kube-scheduler-master_kube-system_77a51208064a0e9b17209ee62638dfcd_0
root@k8s:/# ps -el | grep pause
4 S 65535 16718 16694 0 80 0 - 242 pause ? 00:00:00 pause
4 S 65535 16824 16761 0 80 0 - 242 pause ? 00:00:00 pause
4 S 65535 16864 16773 0 80 0 - 242 pause ? 00:00:00 pause
4 S 65535 16874 16762 0 80 0 - 242 pause ? 00:00:00 pause
4 S 65535 17580 17551 0 80 0 - 242 pause ? 00:00:00 pause
4 S 65535 20614 20588 0 80 0 - 242 pause ? 00:00:00 pause
Kubernetes官方給出的Pause容器的解釋是:
it's part of the infrastructure. This container is started first in all Pods to setup the network for the Pod.
也就是pause容器作為基礎設施,在Pod中會第一個啟動,以提供Pod的網絡共享空間。
后續的容器則以“加入”的方式,共享該Pod資源。
講述Pod比較清晰的文章:
What even is a container: namespaces and cgroups
https://jvns.ca/blog/2016/10/10/what-even-is-a-container/
What are Kubernetes Pods Anyway?
https://www.ianlewis.org/en/what-are-kubernetes-pods-anyway
The Almighty Pause Container
https://www.ianlewis.org/en/almighty-pause-container
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
ip地址
+關注
關注
0文章
309瀏覽量
18991 -
POD
+關注
關注
0文章
18瀏覽量
6298 -
kubernetes
+關注
關注
0文章
270瀏覽量
9516
發布評論請先 登錄
相關推薦
熱點推薦
阿里云容器Kubernetes監控(二) - 使用Grafana展現Pod監控數據
kubernetes中承擔的責任遠不止監控數據的采集,還包括控制臺的監控接口、HPA的POD彈性伸縮等都依賴于Heapster的功能。簡介在kubernetes的監控方案
發表于 05-10 15:28
從零開始入門 K8s| 詳解 Pod 及容器設計模式
親密關系,它們都是在 Kubernetes 中會通過 Pod 的概念去解決的。現在我們理解了 Pod 這樣的概念設計,理解了為什么需要
發表于 09-20 15:12
Kubernetes網絡隔離NetworkPolicy實驗
Kubernetes的一個重要特性就是要把不同node節點的pod(container)連接起來,無視物理節點的限制。但是在某些應用環境中,比如公有云,不同租戶的pod不應該互通,這個
發表于 11-28 10:00
?2940次閱讀
深入研究Kubernetes調度
“本文從 Pod 和節點的配置開始,介紹了 Kubernetes Scheduler 框架、擴展點、API 以及可能發生的與資源相關的瓶頸,并展示了性能調整設置,涵蓋了 Kubernetes
Kubernetes組件pod核心原理
1. 核心組件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是一個容器,裝的是 docker 創建的容器,也就是用來封裝容器的一個容器;
Kubernetes中的網絡模型
在 kubernetes 中,underlay network 中比較典型的例子是通過將宿主機作為路由器設備,Pod 的網絡則通過學習路由條目從而實現跨節點通訊。
Kubernetes Pod如何獨立工作
在學習 Kubernetes 網絡模型的過程中,了解各種網絡組件的作用以及如何交互非常重要。本文就介紹了各種網絡組件在 Kubernetes 集群中是如何交互的,以及如何幫助每個
Kubernetes Pod如何獲取IP地址呢?
Kubernetes 網絡模型的核心要求之一是每個 Pod 都擁有自己的 IP 地址并可以使用該 IP 地址進行通信。很多人剛開始使用 Kubernetes 時,還不清楚如何為每個 Pod
Pod是如何在底層實現的?如何使用Docker創建Pod?
剛開始接觸 Kubernetes 時,你學到的第一件事就是每個 Pod 都有一個唯一的 IP 和主機名,并且在同一個 Pod 中,容器可以通過 localhost 相互通信。所以,顯而
詳解Kubernetes中的Pod調度親和性
在 Kubernetes(K8s)中,Pod 調度親和性(Affinity) 是一種高級調度策略,用于控制 Pod 與節點(Node)或其他 Pod
Kubernetes Pod調度策略原理與落地指南
Pod調度是Kubernetes的核心機制之一,決定了Pod最終運行在哪個節點上。默認調度器kube-scheduler通過一系列預選(Filtering)和優選(Scoring)算法完成調度決策,但默認行為在生產環境
Kubernetes Pod異常問題排查實戰
集群跑著跑著,Pod 掛了。Slack 告警一刷屏,腦子一片空白。打開終端敲 kubectl get pods,看到一堆 CrashLoopBackOff、ImagePullBackOff、Pending,不知道從哪下手。這是每個剛接觸 Kubernetes 運維的人都會
Kubernetes中的Pod簡易理解
評論