一个 pod 不会跨越多个工作节点:

image.png

3.1.1 为何需要 pod

为何多个容器比单个容器中包含多个进程要好

  • 容器被设计为只运行一个进程
  • 多个进程在同一个容器中时, 日志不好区分

3.1.2 了解 pod

由于单个容器不能聚集多个进程, 所以有了 pod.

同一 pod 中容器之间的部分隔离

  • Kubernetes 通过配置 Docker 来让一个 pod 内的所有容器共享相同的 Linux 命名空间, 而不是每个容器都有自己的一组命名空间
  • 一个 pod 中的所有容器都在相同的 network 和 UTS 命名空间下
  • 可以共享相同的 PID 命名空间 (默认未激活)
  • 每个容器的文件系统与其他容器完全隔离 (容器镜像不同), 使用 Volume 来共享文件目录

容器如何共享相同的 IP 和端口空间

  • 避免绑定端口冲突

介绍平坦 pod 间网络

  • pod 之间可以相互访问
  • 这个平坦网络有额外的软件基于真实链路实现的

image.png

3.1.3 通过 pod 合理管理容器

  • 应该将应用程序组织到多个 pod 中, 而每个 pod 只包含紧密相关的组件或进程

将多层应用分散到多个 pod 中

从某种程度上来说, 把 Web 服务器和数据库放到同一个 pod 中有错:

image.png

基于扩缩容考虑而分割到多个 pod 中

  • pod 是扩缩容的基本单位

何时在 pod 中使用多个容器

  • 应用可能有一个主进程和一个或多个辅助进程组成

image.png

决定何时在 pod 中使用多个容器

image.png