From 8b7b499e0be6dc4a759e4daa5898b7a61a6f25b2 Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Thu, 29 Apr 2021 11:48:42 +0800 Subject: [PATCH] [zh] Resync concepts section (12) --- .../containers/container-environment.md | 5 +- .../containers/container-lifecycle-hooks.md | 39 ++++++++--- content/zh/docs/concepts/containers/images.md | 64 ++++++++++++++----- .../docs/concepts/containers/runtime-class.md | 8 ++- 4 files changed, 86 insertions(+), 30 deletions(-) diff --git a/content/zh/docs/concepts/containers/container-environment.md b/content/zh/docs/concepts/containers/container-environment.md index 543260c95a..79170508e6 100644 --- a/content/zh/docs/concepts/containers/container-environment.md +++ b/content/zh/docs/concepts/containers/container-environment.md @@ -68,6 +68,7 @@ Pod 定义中的用户所定义的环境变量也可在容器中使用,就像 ### Cluster information A list of all services that were running when a Container was created is available to that Container as environment variables. +This list is limited to services within the same namespace as the new Container's Pod and Kubernetes control plane services. Those environment variables match the syntax of Docker links. For a service named *foo* that maps to a Container named *bar*, @@ -75,7 +76,9 @@ the following variables are defined: --> ### 集群信息 -创建容器时正在运行的所有服务的列表都可用作该容器的环境变量。这些环境变量与 Docker 链接的语法匹配。 +创建容器时正在运行的所有服务都可用作该容器的环境变量。 +这里的服务仅限于新容器的 Pod 所在的名字空间中的服务,以及 Kubernetes 控制面的服务。 +这些环境变量与 Docker 链接的语法相同。 对于名为 *foo* 的服务,当映射到名为 *bar* 的容器时,以下变量是被定义了的: diff --git a/content/zh/docs/concepts/containers/container-lifecycle-hooks.md b/content/zh/docs/concepts/containers/container-lifecycle-hooks.md index 1f2d2b25e7..cb4a1d613a 100644 --- a/content/zh/docs/concepts/containers/container-lifecycle-hooks.md +++ b/content/zh/docs/concepts/containers/container-lifecycle-hooks.md @@ -59,16 +59,21 @@ No parameters are passed to the handler. `PreStop` -在容器因 API 请求或者管理事件(诸如存活态探针失败、资源抢占、资源竞争等)而被终止之前, -此回调会被调用。 -如果容器已经处于终止或者完成状态,则对 preStop 回调的调用将失败。 -此调用是阻塞的,也是同步调用,因此必须在发出删除容器的信号之前完成。 -没有参数传递给处理程序。 +在容器因 API 请求或者管理事件(诸如存活态探针、启动探针失败、资源抢占、资源竞争等) +而被终止之前,此回调会被调用。 +如果容器已经处于已终止或者已完成状态,则对 preStop 回调的调用将失败。 +在用来停止容器的 TERM 信号被发出之前,回调必须执行结束。 +Pod 的终止宽限周期在 `PreStop` 回调被执行之前即开始计数,所以无论 +回调函数的执行结果如何,容器最终都会在 Pod 的终止宽限期内被终止。 +没有参数会被传递给处理程序。 ## 更新镜像 {#updating-images} -默认的镜像拉取策略是 `IfNotPresent`:在镜像已经存在的情况下, -{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} 将不再去拉取镜像。 -如果希望强制总是拉取镜像,你可以执行以下操作之一: +当你最初创建一个 {{< glossary_tooltip text="Deployment" term_id="deployment" >}}、 +{{< glossary_tooltip text="StatefulSet" term_id="statefulset" >}}、Pod +或者其他包含 Pod 模板的对象时,如果没有显式设定的话,Pod 中所有容器的默认镜像 +拉取策略是 `IfNotPresent`。这一策略会使得 +{{< glossary_tooltip text="kubelet" term_id="kubelet" >}} +在镜像已经存在的情况下直接略过拉取镜像的操作。 + + +如果你希望强制总是拉取镜像,你可以执行以下操作之一: - 设置容器的 `imagePullPolicy` 为 `Always`。 -- 省略 `imagePullPolicy`,并使用 `:latest` 作为要使用的镜像的标签。 +- 省略 `imagePullPolicy`,并使用 `:latest` 作为要使用的镜像的标签; + Kubernetes 会将策略设置为 `Always`。 - 省略 `imagePullPolicy` 和要使用的镜像标签。 - 启用 [AlwaysPullImages](/zh/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) 准入控制器(Admission Controller)。 +{{< note >}} + +对象被 *创建* 时,容器的 `imagePullPolicy` 总是被设置为某值,如果镜像的标签 +后来发生改变,镜像拉取策略也不会被改变。 + +例如,如果你创建了一个 Deployment 对象,其中的镜像标签不是 `:latest`, +后来 Deployment 的镜像被改为 `:latest`,则 `imagePullPolicy` 不会被改变为 +`Always`。你必须在对象被初始创建之后手动改变拉取策略。 +{{< /note >}} + + 如果 `imagePullPolicy` 未被定义为特定的值,也会被设置为 `Always`。 -Kubernetes 内置的 dockershim CRI 不支持配置运行时 handler。 +为 dockershim 设置 RuntimeClass 时,必须将运行时处理程序设置为 `docker`。 +Dockershim 不支持自定义的可配置的运行时处理程序。 #### [containerd](https://containerd.io/)