5.0.1 Pod

Pod 是Kubernetes项目中的原子调度单位
简单类比,容器的本质是进程,Kubernetes就像是管理进程的操作系统。
在Linux机器里,执行pstree -g命令后
可以展示当前系统中正在运行的进程的树状结构。

systemd(1)-+-accounts-daemon(1984)-+-{gdbus}(1984)
           | `-{gmain}(1984)
           |-acpid(2044)
          ...      
           |-lxcfs(1936)-+-{lxcfs}(1936)
           | `-{lxcfs}(1936)
           |-mdadm(2135)
           |-ntpd(2358)
           |-polkitd(2128)-+-{gdbus}(2128)
           | `-{gmain}(2128)
           |-rsyslogd(1632)-+-{in:imklog}(1632)
           |  |-{in:imuxsock) S 1(1632)
           | `-{rs:main Q:Reg}(1632)
           |-snapd(1942)-+-{snapd}(1942)
           |  |-{snapd}(1942)
           |  |-{snapd}(1942)
           |  |-{snapd}(1942)
           |  |-{snapd}(1942)

在一个真正的操作系统里,进程并不好似独自运行的,而是以进程组的方式,有原则地组织在uyiqi。像rsyslogd程序,负责的是linux操作系统的日志处理。和内核日志模块imklog,imuxsock等相互协作,共同完成 rsyslogd程序的职责.
这三个进程一定要运行在同一台机器上,否则,它们之间基于Socket的通信和文件交换,都会出现问题。

而把类似的应用给容器化,由于受限于容器的单进程模型,这三个模块必须被制作成三个不同的容器。设置affinity的属性来统一安排。
(单进程模型是指容器没有管理多个进程的能力而不是运行多个容器的能力,容器里的PID=1de进程是容器本身,其他进程都是PID=1的子进程,用户编写的应用,无法像正常操作系统里的init进程或者systemd那样拥有进程管理的功能。)

但是这在容器中会造成 成组调度(gang scheduling)问题。(例如,前两个容器被分配至某一节点,而当地三个容器加入后,发现内存硬件不足)

比如 在Mesos中有一个资源囤积(Resource hoarding)的机制,会在所有设置了Affinity约束的任务达到时,才开始对它们统一进行调度。(有调度效率损失和死锁的可能性)
在Google Omege论文中,提出乐观调度处理冲突的方法,先不管这些冲突,通过回滚机制来解决冲突之后的问题。(技术复杂)

在Kubernetes项目中,Pod是Kubernetes里的原子调度单位,这就意味着,Kubernetes项目的调度器,是同一按照Pod而非容器的资源需求进行计算的。

像上述问题,就会形成一个包括三个容器的Pod来处理,根本就不会选择小于限制条件的内存的节点.

适用于超亲密关系容器:互相之间会直接的文件交换,使用localhost或者Socker文件进行文本通信,会发生非常频繁的远程调用,需要共享某些Linux Namespace(如,一个容器需要加入另一个容器的network namespace)

但像PHP与Mysql虽然会发生访问,但更适合做成两个Pod。

Pod最重要的一个事实是: 它只是一个逻辑概念。
Pod里的所有容器,共享的是同一个network Namespace,并且可以声明共享同一个Volume。

假设一个Pod中有A和B两个容器:
为保证对等关系而非拓扑关系,就不能像Docker那样:容器B先启动,容器A后启动。

docker run --net=B --volumes-from=B --name=A image-A..
Capture.PNG

在Kubernetes项目中,Pod的实现是需要使用一个中间容器Infra。Infra容器永远都是第一个被创建的容器,而用户的其它容器,则通过Join Network Namespace的方式,与Infra容器关联在一起。
Infra容器在Kubernetes项目中,一定是占用极少资源的镜像。目前是用汇编语言编写,处于暂停状态的容器,大小为100~200kb

对于Pod里的容器A和B来说:
它们可以直接使用localhost进行通信;
它们看到的网络设备跟Infra容器看到的完全一致
网络资源包括Ip对于Pod来说只有一个,被Pod内的所有容器所共享
Pod的生命周期与Infra容器一致,与用户定义的A或B无关

容器设计模式论文:https://www.usenix.org/conference/hotcloud16/workshop-program/presentation/burns

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容