From 6d1e72a510a4001486cd78ea156c804d39a732d7 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 18 May 2023 19:44:20 +0800 Subject: [PATCH] [zh] sync /administer-cluster/encrypt-data.md --- .../tasks/administer-cluster/encrypt-data.md | 52 +++++++++++++----- .../administer-cluster/safely-drain-node.md | 54 ++++++++++++------- 2 files changed, 72 insertions(+), 34 deletions(-) diff --git a/content/zh-cn/docs/tasks/administer-cluster/encrypt-data.md b/content/zh-cn/docs/tasks/administer-cluster/encrypt-data.md index 204169ddd1..cc869932d4 100644 --- a/content/zh-cn/docs/tasks/administer-cluster/encrypt-data.md +++ b/content/zh-cn/docs/tasks/administer-cluster/encrypt-data.md @@ -54,16 +54,13 @@ This page shows how to enable and configure encryption of secret data at rest. The `kube-apiserver` process accepts an argument `--encryption-provider-config` that controls how API data is encrypted in etcd. The configuration is provided as an API named -[`EncryptionConfiguration`](/docs/reference/config-api/apiserver-encryption.v1/). `--encryption-provider-config-automatic-reload` boolean argument determines if the file set by `--encryption-provider-config` should be automatically reloaded if the disk contents change. This enables key rotation without API server restarts. An example configuration is provided below. +[`EncryptionConfiguration`](/docs/reference/config-api/apiserver-encryption.v1/). An example configuration is provided below. --> ## 配置并确定是否已启用静态数据加密 {#configuration-and-determing-wheter-encryption-at-rest-is-already-enabled} `kube-apiserver` 的参数 `--encryption-provider-config` 控制 API 数据在 etcd 中的加密方式。 -该配置作为一个名为 [`EncryptionConfiguration`](/zh-cn/docs/reference/config-api/apiserver-encryption.v1/) 的 API 提供。 -`--encryption-provider-config-automatic-reload` 布尔参数决定了磁盘内容发生变化时是否应自动重新加载 -`--encryption-provider-config` 设置的文件。这样可以在不重启 API 服务器的情况下进行密钥轮换。 - -下面提供了一个示例配置。 +该配置作为一个名为 [`EncryptionConfiguration`](/zh-cn/docs/reference/config-api/apiserver-encryption.v1/) +的 API 提供。下面提供了一个示例配置。 {{< caution >}} +## 配置自动重新加载 {#configure-automatic-reloading} + + +你可以配置加密提供程序配置的自动重新加载。 +该设置决定了 {{< glossary_tooltip text="API 服务器" term_id="kube-apiserver" >}} +是仅在启动时加载一次为 `--encryption-provider-config` 指定的文件, +还是在每次你更改该文件时都自动加载。 +启用此选项可允许你在不重启 API 服务器的情况下更改静态加密所需的密钥。 + + +要允许自动重新加载, +可使用 `--encryption-provider-config-automatic-reload=true` 运行 API 服务器。 + ## {{% heading "whatsnext" %}} @@ -25,25 +23,20 @@ This page shows how to safely drain a node, respecting the PodDisruptionBudget y ## {{% heading "prerequisites" %}} -{{% version-check %}} 此任务假定你已经满足了以下先决条件: -* 使用的 Kubernetes 版本 >= 1.5。 -* 以下两项,具备其一: - 1. 在节点清空期间,不要求应用程序具有高可用性 - 2. 你已经了解了 [PodDisruptionBudget 的概念](/zh-cn/docs/concepts/workloads/pods/disruptions/), - 并为需要它的应用程序[配置了 PodDisruptionBudget](/zh-cn/docs/tasks/run-application/configure-pdb/)。 +1. 在节点清空期间,不要求应用具有高可用性 +2. 你已经了解了 [PodDisruptionBudget 的概念](/zh-cn/docs/concepts/workloads/pods/disruptions/), + 并为需要它的应用[配置了 PodDisruptionBudget](/zh-cn/docs/tasks/run-application/configure-pdb/)。 @@ -110,14 +103,35 @@ have been safely evicted (respecting the desired graceful termination period, and respecting the PodDisruptionBudget you have defined). It is then safe to bring down the node by powering down its physical machine or, if running on a cloud platform, deleting its virtual machine. - -First, identify the name of the node you wish to drain. You can list all of the nodes in your cluster with --> `kubectl drain` 的成功返回,表明所有的 Pod(除了上一段中描述的被排除的那些), 已经被安全地逐出(考虑到期望的终止宽限期和你定义的 PodDisruptionBudget)。 然后就可以安全地关闭节点, 比如关闭物理机器的电源,如果它运行在云平台上,则删除它的虚拟机。 +{{< note >}} + +如果存在新的、能够容忍 `node.kubernetes.io/unschedulable` 污点的 Pod, +那么这些 Pod 可能会被调度到你已经清空的节点上。 +除了 DaemonSet 之外,请避免容忍此污点。 + + +如果你或另一个 API 用户(绕过调度器)直接为 Pod 设置了 +[`nodeName`](/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/#nodename)字段, +则即使你已将该节点清空并标记为不可调度,Pod 仍将被绑定到这个指定的节点并在该节点上运行。 +{{< /note >}} + + 首先,确定想要清空的节点的名称。可以用以下命令列出集群中的所有节点: ```shell @@ -174,9 +188,9 @@ respect the `PodDisruptionBudget` you specify. --> ## 并行清空多个节点 {#draining-multiple-nodes-in-parallel} - `kubectl drain` 命令一次只能发送给一个节点。 - 但是,你可以在不同的终端或后台为不同的节点并行地运行多个 `kubectl drain` 命令。 - 同时运行的多个 drain 命令仍然遵循你指定的 `PodDisruptionBudget`。 +`kubectl drain` 命令一次只能发送给一个节点。 +但是,你可以在不同的终端或后台为不同的节点并行地运行多个 `kubectl drain` 命令。 +同时运行的多个 drain 命令仍然遵循你指定的 `PodDisruptionBudget`。