一、为什么需要Pod
容器的本质是一个视图被隔离、资源受限的进程。
容器里的PID = 1的进程就是应用本身
管理虚拟机 = 管理基础设施
管理容器 = 直接管理应用本身
Kubernetes是云时代的操作系统,容器镜像就是这个操作系统的软件安装包。
Pod = “进程组”
Pod是Kubernetes分配资源的一个逻辑单位,里面的容器要共享某些资源,所以Pod也是Kubernetes的原子调度单位
二、Pod的实现机制
Pod要解决的问题:
核心在于如何让一个Pod里的多个容器之间最高效的共享某些资源和数据
因为容器之间原本被Linux Namespace和cgroups隔开的,所以实际要解决的是如何打破这个隔离,从而共享某些资源和数据
具体解法分为两个部分:共享网络和共享存储
三、详解容器的设计模式
Sidercar:
通过在Pod里定义专门的容器,来执行主业务容器所需要的辅助工作
Sidercar:应用于日志收集
业务容器将日志写在Volume里,日志容器共享该Volume从而将日志转发到远程存储当中
Sidercar:代理容器
代理容器对业务容器屏蔽被代理的服务集群,简化业务代码的实现逻辑
Sidercar:适配器容器
适配器容器将业务容器暴露出来的接口转化成另外一种格式