pod的好处和坏处

我们知道,Docker容器使用了“Namespace隔离,Cgroup做资源限制,rootfs做文件系统”,那么为什么需要pod呢?pod是一组共享了某些资源的容器,是K8S中原子调度单位。

1,编排需要

我们在部署进程的时候,通常需要多个进程一起部署。这些进程之间通常需要互相配合,通常需要发生文件交换,本地通信,共享某些namespace等。所以我们对这些进程需要成组部署。但是如果没有pod对他们进行成组部署会出现下面这个问题。

例如,现在有3个进程共需要3GB内存,而现在有两个节点,分别是2.5GB和3GB。若不成组部署,则前两个进程可能会被部署到2.5GB的节点上,而第三个进程则发现这个节点已经没有足够的空间部署了。所以我们把这个三个进程打包成一个整体,则在部署更加直观快捷。

2,共享资源需要(网络,volume)

Pod里面的容器共享network Namespace网络资源,并且可以共同声明一个Volume。例如,A容器共享B容器的网络资源和volume,那么在docker中的思路是:我们需要先部署B容器,再部署A容器。所以A和B之间的关系成拓补关系。

而在我们Pod中,我们会在事先部署0号容器infra,而这个infra容器为其他后加入的容器提供网络资源,也就是说其他所有的容器都需要共享infra容器的网络。所有,后面加入的容器则无需拓补关系部署。

于是,A和B通信则可以直接使用locakhost,他们看到的网络设备和infra设备是一样的,一个pod也就只有一个IP地址。 

同样的,共享volume也是利用这种思想。一个 Volume 对应的宿主机目录对于 Pod 来说就只有一个,Pod 里的容器只要声明 挂载这个 Volume,就一定可以共享这个 Volume 对应的宿主机目录。

3,容器设计模式,sidecar

sidecar是指我们在一个pod中,启动一个辅助容器,用来辅助主容器的其他工作。例如,一下这个读取保存日志的例子。

当A B两个进程共享同一个目录,A工作并且负责把日志输出到这个目录下,那么B则只需要读取日志并转发到数据库保存下来。所以,这里B就是我们所说的sidecar容器。

以上3点是我们需要pod的好处。

那么我们使用pod的有什么坏处呢???

pod只是一个逻辑概念,并不是真实存在的,它是一种编排技术。但是pod又有充当虚拟机角色的作用。所以,坏处就来了,pod不是真的虚拟机,所以它提供的pod之间隔离的效果实际上是利用linux namespace,cgroup rootfs技术,而不是真正的隔离和独享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值