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 -â¦" 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/kubeâ¦" 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 --adâ¦" 28 hours ago Up 28 hours k8s_kube-apiserver_kube-apiserver-master_kube-system_d6f2f822def6f57249e6789960cadda9_0
77fb48469b2b f51846a4fd28 "kube-controller-manâ¦" 28 hours ago Up 28 hours k8s_kube-controller-manager_kube-controller-manager-master_kube-system_85ff8159d8c894c53981716f8927f187_0
db450e4928f8 25f8c7f3da61 "etcd --advertise-clâ¦" 28 hours ago Up 28 hours k8s_etcd_etcd-master_kube-system_1d7ec9e1c409f497753e8635eb01ed02_0
00383cb94409 71d575efe628 "kube-scheduler --auâ¦" 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文章
240浏览量
16743 -
POD
+关注
关注
0文章
16浏览量
5972 -
kubernetes
+关注
关注
0文章
219浏览量
8568
发布评论请先 登录
相关推荐
Kubernetes的Device Plugin设计解读
设计解读最近在调研Kubernetes的GPU调度和运行机制,发现传统的alpha.kubernetes.io/nvidia-gpu即将在1.11版本中下线,和GPU相关的调度和部署的代码将彻底从主干代码中
发表于 03-12 16:23
Kubernetes Ingress 高可靠部署最佳实践
摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层。简介
发表于 04-17 14:35
阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据
kubernetes中承担的责任远不止监控数据的采集,还包括控制台的监控接口、HPA的POD弹性伸缩等都依赖于Heapster的功能。简介在kubernetes的监控方案
发表于 05-10 15:28
从零开始入门 K8s| 详解 Pod 及容器设计模式
亲密关系,它们都是在 Kubernetes 中会通过 Pod 的概念去解决的。现在我们理解了 Pod 这样的概念设计,理解了为什么需要
发表于 09-20 15:12
浅谈Kubernetes集群的高可用方案
Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的高可用性。针对Kubernetes集
发表于 10-11 10:04
•1次下载
Kubernetes网络隔离NetworkPolicy实验
Kubernetes的一个重要特性就是要把不同node节点的pod(container)连接起来,无视物理节点的限制。但是在某些应用环境中,比如公有云,不同租户的pod不应该互通,这个时候就需要网络
发表于 11-28 10:00
•2540次阅读
深入研究Kubernetes调度
“本文从 Pod 和节点的配置开始,介绍了 Kubernetes Scheduler 框架、扩展点、API 以及可能发生的与资源相关的瓶颈,并展示了性能调整设置,涵盖了 Kubernetes 中调度
Kubernetes组件pod核心原理
1. 核心组件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是一个容器,装的是 docker 创建的容器,也就是用来封装容器的一个容器;
Kubernetes Pod多网卡方案MULTUS
Kubernetes 当前没有提供为POD添加额外的接口选项的规定,或支持多个 CNI 插件同时工作的规定,但是它确实提供了一种由 API 服务器扩展受支持的API的机制。使用 "自定义
Kubernetes Pod如何独立工作
在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。
Kubernetes Pod如何获取IP地址呢?
Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod
Pod是如何在底层实现的?如何使用Docker创建Pod?
刚开始接触 Kubernetes 时,你学到的第一件事就是每个 Pod 都有一个唯一的 IP 和主机名,并且在同一个 Pod 中,容器可以通过 localhost 相互通信。所以,显而易见,一个
评论