Pod
Chunbin Lv4

为什么需要Pod?

容器的本质

容器的本质是一个资源被隔离、资源受限制的进程
容器里PID=1的进程就是应用本身
管理虚拟机=管理基础设施;管理容器=直接管理应用本身

k8s

k8s就是云时代的操作系统
容器就是这个操作系统的软件安装包

类比

  • k8s = 操作系统(如:linux)
  • 容器 = 进程(如:linux线程)
  • Pod = 进程组(如:linux线程组)
    注意:linux线程是轻量级的进程

比如:

4个进程组成程序 => 由4个容器组成的Pod
他们需要共享资源

为什么Pod必须是原子调度单位

调度方案

Mesos:资源囤积

  • 所有设置了Affinity约束的任务都达到了,才会开始统一调度
  • 调度效率损失和死锁

Google Omega:乐观调度处理冲突

  • 不管这些冲突的异常情况,先调度,同时设置一个非常精妙的回滚机制,这样经过冲突后,通过回滚来解决问题
  • 高效优雅、实现机制

k8s:Pod

Pod的实现

网络共享

通过Infra Container(一个非常小汇编写的image)的方式,,其他所有容器都会通过 Join Namespace 的方式加入到 Infra container 的 Network Namespace 中,共享同一个网络Network Namespace

  • 一个Pod只有一个Ip地址
  • 容器网络视图一致

共享存储

通过volume共享存储

容器设计模式

Sidercar

通过在Pod里定义专门容器,来执行主业务容器需要的辅助工作
比如:

  • ssh进去执行的脚本
  • 日志收集
  • Debug应用
  • 应用监控
    优势:
  • 将辅助功能同主业务容器解耦,实现独立发布和能力重用
 评论
评论插件加载失败
正在加载评论插件
由 Hexo 驱动 & 主题 Keep
访客数 访问量