0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Kubernetes中的Pod简易理解

汽车电子技术 来源:码农与软件时代 作者: 码农与软件时代 2023-02-15 10:44 次阅读

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
    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

    理解和创建Kubernetes对象

    Kubernetes对象总结
    发表于 04-11 15:14

    从零开始入门 K8s| 详解 Pod 及容器设计模式

    亲密关系,它们都是在 Kubernetes 中会通过 Pod 的概念去解决的。现在我们理解Pod 这样的概念设计,理解了为什么需要
    发表于 09-20 15:12

    Pod资源配置

    Kubernetes进阶实战》第四章《管理Pod资源对象》
    发表于 10-22 14:39

    浅谈Kubernetes集群的高可用方案

    Kubernetes作为容器应用的管理中心,通过对Pod的数量进行监控,并且根据主机或容器失效的状态将新的Pod调度到其他Node上,实现了应用层的高可用性。针对Kubernetes
    发表于 10-11 10:04 1次下载
    浅谈<b class='flag-5'>Kubernetes</b>集群的高可用方案

    Kubernetes网络隔离NetworkPolicy实验

    Kubernetes的一个重要特性就是要把不同node节点的pod(container)连接起来,无视物理节点的限制。但是在某些应用环境中,比如公有云,不同租户的pod不应该互通,这个时候就需要网络
    发表于 11-28 10:00 2540次阅读

    深入研究Kubernetes调度

    “本文从 Pod 和节点的配置开始,介绍了 Kubernetes Scheduler 框架、扩展点、API 以及可能发生的与资源相关的瓶颈,并展示了性能调整设置,涵盖了 Kubernetes 中调度
    的头像 发表于 08-23 10:39 1188次阅读

    Kubernetes组件pod核心原理

    1. 核心组件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是一个容器,装的是 docker 创建的容器,也就是用来封装容器的一个容器;
    的头像 发表于 09-02 09:27 1584次阅读

    Kubernetes Pod多网卡方案MULTUS

    Kubernetes 当前没有提供为POD添加额外的接口选项的规定,或支持多个 CNI 插件同时工作的规定,但是它确实提供了一种由 API 服务器扩展受支持的API的机制。使用 "自定义
    的头像 发表于 06-22 10:08 1072次阅读

    Kubernetes Pod如何独立工作

    在学习 Kubernetes 网络模型的过程中,了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的,以及如何帮助每个 Pod 都能获取 IP 地址。
    的头像 发表于 05-16 14:29 431次阅读
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何独立工作

    Kubernetes Pod如何获取IP地址呢?

    Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 Pod
    的头像 发表于 07-21 10:00 540次阅读
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何获取IP地址呢?

    Pod是如何在底层实现的?如何使用Docker创建Pod

    刚开始接触 Kubernetes 时,你学到的第一件事就是每个 Pod 都有一个唯一的 IP 和主机名,并且在同一个 Pod 中,容器可以通过 localhost 相互通信。所以,显而易见,一个
    的头像 发表于 08-14 10:33 835次阅读
    <b class='flag-5'>Pod</b>是如何在底层实现的?如何使用Docker创建<b class='flag-5'>Pod</b>?

    配置KubernetesPod使用代理的两种常见方式

    的需要。本文将介绍配置KubernetesPod使用代理的两种常见方式:通过ConfigMap和直接在应用程序环境变量中设置。
    的头像 发表于 01-05 11:22 416次阅读
    配置<b class='flag-5'>Kubernetes</b>中<b class='flag-5'>Pod</b>使用代理的两种常见方式