From 433b4b4b4b31cf155d5ab7f30719beae3317794d Mon Sep 17 00:00:00 2001 From: chentanjun <2799194073@qq.com> Date: Thu, 30 Jan 2020 15:02:13 +0800 Subject: [PATCH] sync zh-trans content/zh/docs/concepts/workloads/pods/pod-overview.md (#18882) --- .../concepts/workloads/pods/pod-overview.md | 142 +++++++++--------- 1 file changed, 75 insertions(+), 67 deletions(-) diff --git a/content/zh/docs/concepts/workloads/pods/pod-overview.md b/content/zh/docs/concepts/workloads/pods/pod-overview.md index e589b39a2b..adccc41e94 100644 --- a/content/zh/docs/concepts/workloads/pods/pod-overview.md +++ b/content/zh/docs/concepts/workloads/pods/pod-overview.md @@ -1,9 +1,10 @@ --- -reviewers: -- erictune title: Pod 概览 content_template: templates/concept weight: 10 +card: + name: 概念 + weight: 60 --- -{{% capture overview %}} +{{% capture overview %}} 本节提供了 `Pod` 的概览信息,`Pod` 是最小可部署的 Kubernetes 对象模型。 {{% /capture %}} @@ -28,71 +32,65 @@ This page provides an overview of `Pod`, the smallest deployable object in the K - ## 理解 Pod -*Pod* 是 Kubernetes 的基本构建块,它是 Kubernetes 对象模型中创建或部署的最小和最简单的单元。 -Pod 表示集群上正在运行的进程。 - - -Pod 封装了应用程序容器(或者在某些情况下封装多个容器)、存储资源、唯一网络 IP 以及控制容器应该如何运行的选项。 -Pod 表示部署单元:*Kubernetes 中应用程序的单个实例*,它可能由单个容器或少量紧密耦合并共享资源的容器组成。 +*Pod* 是 Kubernetes 应用程序的基本执行单元,即它是 Kubernetes 对象模型中创建或部署的最小和最简单的单元。Pod 表示在 {{< glossary_tooltip term_id="cluster" >}} 上运行的进程。 +Pod 封装了应用程序容器(或者在某些情况下封装多个容器)、存储资源、唯一网络 IP 以及控制容器应该如何运行的选项。 +Pod 表示部署单元:*Kubernetes 中应用程序的单个实例*,它可能由单个 {{< glossary_tooltip text="容器" term_id="container" >}} 或少量紧密耦合并共享资源的容器组成。 + +[Docker](https://www.docker.com) 是 Kubernetes Pod 中最常用的容器运行时,但 Pod 也能支持其他的[容器运行时](/docs/setup/production-environment/container-runtimes/)。 + + + -[Docker](https://www.docker.com) 是 Kubernetes Pod 中最常用的容器运行时,但 Pod 也能支持其他的[容器运行时](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)。 - Kubernetes 集群中的 Pod 可被用于以下两个主要用途: * **运行单个容器的 Pod**。"每个 Pod 一个容器"模型是最常见的 Kubernetes 用例;在这种情况下,可以将 Pod 看作单个容器的包装器,并且 Kubernetes 直接管理 Pod,而不是容器。 * **运行多个协同工作的容器的 Pod**。 Pod 可能封装由多个紧密耦合且需要共享资源的共处容器组成的应用程序。 -这些位于同一位置的容器可能形成单个内聚的服务单元——一个容器将文件从共享卷提供给公众,而另一个单独的“挂斗”容器则刷新或更新这些文件。 +这些位于同一位置的容器可能形成单个内聚的服务单元 —— 一个容器将文件从共享卷提供给公众,而另一个单独的“挂斗”(sidecar)容器则刷新或更新这些文件。 Pod 将这些容器和存储资源打包为一个可管理的实体。 +[Kubernetes 博客](https://kubernetes.io/blog) 上有一些其他的 Pod 用例信息。更多信息请参考: - -[Kubernetes 博客](http://kubernetes.io/blog) 上有一些其他的 Pod 用例信息。更多信息请参考: - -* [分布式系统工具包:复合容器的模式](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) -* [容器设计模式](https://kubernetes.io/blog/2016/06/container-design-patterns) + * [分布式系统工具包:容器组合的模式](https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns) + * [容器设计模式](https://kubernetes.io/blog/2016/06/container-design-patterns) -每个 Pod 表示运行给定应用程序的单个实例。如果希望横向扩展应用程序(例如,运行多个实例),则应该使用多个 Pod,每个实例使用一个。 -在 Kubernetes 中,这通常被称为 _副本_。 -通常使用一个称为控制器的抽象来创建和管理一组被复制的 Pod。 -更多信息请参见 [POD 和控制器](#pods-and-controllers)。 +每个 Pod 表示运行给定应用程序的单个实例。如果希望横向扩展应用程序(例如,运行多个实例),则应该使用多个 Pod,每个应用实例使用一个 Pod 。在 Kubernetes 中,这通常被称为 _副本_。通常使用一个称为控制器的抽象来创建和管理一组副本 Pod。更多信息请参见 [Pod 和控制器](#pods-and-controllers)。 - ### Pod 怎样管理多个容器 + Pod 被设计成支持形成内聚服务单元的多个协作过程(作为容器)。 Pod 中的容器被自动的安排到集群中的同一物理或虚拟机上,并可以一起进行调度。 容器可以共享资源和依赖、彼此通信、协调何时以及何种方式终止它们。 @@ -103,10 +101,16 @@ Note that grouping multiple co-located and co-managed containers in a single Pod 注意,在单个 Pod 中将多个并置和共同管理的容器分组是一个相对高级的使用方式。 只在容器紧密耦合的特定实例中使用此模式。 -例如,您可能有个充当共享卷中文件的 Web 服务器的容器,以及从远程源更新这些文件的单独的"挂斗"容器,如下图所示: +例如,您可能有一个充当共享卷中文件的 Web 服务器的容器,以及一个单独的 sidecar 容器,该容器从远端更新这些文件,如下图所示: -{{< figure src="/images/docs/pod.svg" title="pod diagram" width="50%" >}} +{{< figure src="/images/docs/pod.svg" alt="Pod 图例" width="50%" >}} + + + +有些 Pod 具有 {{< glossary_tooltip text="初始容器" term_id="init-container" >}} 和 {{< glossary_tooltip text="应用容器" term_id="app-container" >}}。初始容器会在启动应用容器之前运行并完成。 +#### 网络 + - -#### 联网 - 每个 Pod 分配一个唯一的 IP 地址。 Pod 中的每个容器共享网络命名空间,包括 IP 地址和网络端口。 *Pod 内的容器* 可以使用 `localhost` 互相通信。 @@ -129,33 +133,34 @@ Pod 中的每个容器共享网络命名空间,包括 IP 地址和网络端口 - #### 存储 -一个 Pod 可以指定一组共享存储 *卷*。 + +一个 Pod 可以指定一组共享存储{{< glossary_tooltip text="卷" term_id="volume" >}}。 Pod 中的所有容器都可以访问共享卷,允许这些容器共享数据。 -卷还允许 Pod 中的持久数据在重启 Pod 中的某个容器时存活。 -有关 Kubernetes 如何在 Pod 中实现共享存储的更多信息,请参考 [卷](/docs/concepts/storage/volumes/)。 +卷还允许 Pod 中的持久数据保留下来,以防其中的容器需要重新启动。 +有关 Kubernetes 如何在 Pod 中实现共享存储的更多信息,请参考[卷](/docs/concepts/storage/volumes/)。 - ## 使用 Pod + 你很少在 Kubernetes 中直接创建单独的 Pod,甚至是单个存在的 Pod。 这是因为 Pod 被设计成了相对短暂的一次性的实体。 -当 Pod 由您创建或者间接地由控制器创建时,它被调度在集群中的节点上运行。 +当 Pod 由您创建或者间接地由控制器创建时,它被调度在集群中的 {{< glossary_tooltip term_id="node" >}} 上运行。 Pod 会保持在该节点上运行,直到进程被终止、Pod 对象被删除、Pod 因资源不足而被 *驱逐* 或者节点失效为止。 -{{< note >}} + +{{< note >}} 重启 Pod 中的容器不应与重启 Pod 混淆。Pod 本身不运行,而是作为容器运行的环境,并且一直保持到被删除为止。 {{< /note >}} @@ -171,47 +176,48 @@ Kubernetes 使用了一个更高级的称为 *控制器* 的抽象,由它处 +### Pod 和控制器 {#pods-and-controllers} + - -### Pod 和控制器 - 控制器可以为您创建和管理多个 Pod,管理副本和上线,并在集群范围内提供自修复能力。 例如,如果一个节点失败,控制器可以在不同的节点上调度一样的替身来自动替换 Pod。 - 包含一个或多个 Pod 的控制器一些示例包括: + * [Deployment](/docs/concepts/workloads/controllers/deployment/) * [StatefulSet](/docs/concepts/workloads/controllers/statefulset/) * [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) + 控制器通常使用您提供的 Pod 模板来创建它所负责的 Pod。 +## Pod 模板 + - -## Pod 模板 - Pod 模板是包含在其他对象中的 Pod 规范,例如 -[Replication Controllers](/docs/concepts/workloads/controllers/replicationcontroller/)、 [Jobs](/docs/concepts/jobs/run-to-completion-finite-workloads/)、和 +[Replication Controllers](/docs/concepts/workloads/controllers/replicationcontroller/)、 [Jobs](/docs/concepts/jobs/run-to-completion-finite-workloads/) 和 [DaemonSets](/docs/concepts/workloads/controllers/daemonset/)。 控制器使用 Pod 模板来制作实际使用的 Pod。 下面的示例是一个简单的 Pod 清单,它包含一个打印消息的容器。 @@ -244,13 +250,15 @@ Pod 模板就像饼干切割器,而不是指定所有副本的当前期望状 {{% /capture %}} -{{% capture whatsnext %}} -* 进一步了解 Pod 的行为: +{{% capture whatsnext %}} +* 详细了解 [Pod](/docs/concepts/workloads/pods/pod/) +* 了解有关 Pod 行为的更多信息: * [Pod 的终止](/docs/concepts/workloads/pods/pod/#termination-of-pods) - * 其他 Pod 话题 + * [Pod 的生命周期](/docs/concepts/workloads/pods/pod-lifecycle/) {{% /capture %}}