《Kubernetes设计与实现》
  • Introduction
  • 内容简介
  • 前言
  • [第二章:Kubernetes基础]
    • 2.3 Kubernetes API
  • [第三章:工作负载管理]
    • [3.1 Pod]
      • 3.1.1 Pod概述
      • 3.1.1 Pod初体验
    • [3.2 ReplicationController]
      • 3.2.1 ReplicationController概述
      • 3.2.2 ReplicationController初体验
    • [3.3 ReplicaSet]
      • 3.3.1 ReplicaSet概述
      • 3.3.2 ReplicaSet初体验
    • [3.4 Deployment]
      • 3.4.1 Deployment概述
      • 3.4.2 Deployment初体验
    • [3.5 DaemonSet]
      • 3.5.1 DaemonSet概述
      • 3.5.2 DaemonSet初体验
  • [第四章:服务]
    • [4.1 Service]
      • 4.1.1 Service概述
      • 4.1.1 Service上手体验
  • [第六章:配置管理]
    • [6.1 Secret--机密信息管理]
      • 6.1.1 Secret概述
  • [第七章:集群认证]
    • [7.1 证书]
      • 7.1.1 证书基础
      • 7.1.2 证书签发流程
  • [第九章:准入控制器]
    • [9.1 准入控制器概述]
      • 9.1.1 概述
      • [9.1.2 内置默认启动的插件]
        • 9.1.2.1 NamespaceLifecycle
        • 9.1.2.15 MutatingAdmissionWebhook
  • [第十章:ResourceQuota]
    • 10.1 ResourceQuota概述
  • [第十六章:API设计约定]
    • 16.1 字段可选性设计约定
    • 16.2 condition设计约定
    • 16.3 event设计约定
  • [第十九章:Kubernetes生态]
    • [19.1 Kind]
      • [19.1.1 Kind概述]
      • 19.1.2 映射端口到主机
      • 19.1.3 配置端口转发
由 GitBook 提供支持
在本页
  • Pod的概念
  • Pod的优势
  • Pod的局限性
  • 小结
  • 延伸阅读

这有帮助吗?

  1. [第三章:工作负载管理]
  2. [3.1 Pod]

3.1.1 Pod概述

上一页[3.1 Pod]下一页3.1.1 Pod初体验

最后更新于4年前

这有帮助吗?

Pod的概念

尽管Kubernetes是容器编排系统,但它并不直接管理容器,它管理的却是名为Pod的对象。

Pod是对容器的高级抽像,Pod单词英文含义为豆荚,非常形象地揭示了其于容器的关系,就像一个豆荚中可以含一个或多个豆子一样,一个Pod也可以包含一个或多个容器。

在Kubernetes中,Pod是最基础的对象,不管Pod中包含多少容器,Pod的创建和销毁对应的是其包含的所有容器一并创建和销毁。

Pod的优势

在部署容器化应用时,有时我们会希望多个密切相关的容器能够部署在同一节点,这样这些容器之间可以方便地共享本地存储,也可以方便地互相通信,甚至我们也希望这些容器能够一并创建和销毁。

比如,我们有一个容器用于运行Web 服务器,此外还有一个容器用于管理Web服务器的数据,考虑到两个容器需要共享存储,那么将这两个容器中封装到同一个Pod中就比较合适,如下图所示:

与直接管理多个容器相比,Pod中的容器除了享有相同的生命周期以外,它们的网络和存储环境也有所不同。

Kubernetes会给Pod分配一个唯一的IP地址,Pod为容器提供了相对隔离的网络环境,Pod中的容器与外部通信时都使用该IP地址,而Pod中的容器之间通信则可以直接使用localhost通信,此时只需要给互相通信的容器指定不同的端口即可。

在创建Pod时如果指定了存储卷,Kubernetes就会把存储卷挂载到每个容器,供容器共享使用。

Pod的概念源于Kubernetes对实际应用场景的准确把握,当需要单独部署容器时,只需要在Pod中指定一个容器即可,当需要多个容器一并部署时,只需要在Pod中指定多个容器。

Pod的局限性

尽管Pod可以封装容器,借此我们可以在一定程度上完成容器的批量管理,但实际上直接创建Pod的场景非常罕见。

Kubernetes将Pod视为一种不可靠的资源,它没有自愈能力,当遇到node异常或因资源不足而被驱逐时,Pod将会被删除。 为了满足各种场景下管理Pod的诉求,Kubernetes在Pod之上又提供了多种控制器资源,比如Deployment、StatefulSet和DaemonSet等,这些控制器可以帮助我们更好的管理Pod,确保Pod总是按照我们预期的行为在运行。

小结

Pod在Kubernetes系统中只是一个资源,它不是一个进程,它是基于容器的抽象,它为一个或多个容器准备运行环境,运行一个Pod,最终还是把容器一个个交给容器运行时来运行。

尽管在Kubernetes系统中我们一般不直接创建Pod,但它是最基础的资源,Kubernetes大部分特性都是围绕如何更好地运行、管理Pod而展开,所以必须对Pod有一定的了解才可以开始后面的学习。

延伸阅读

《Pod Overview》

https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/