From bf6ae607c7abe3b73bdb3d49468b70d6bdd9244c Mon Sep 17 00:00:00 2001 From: Qiming Teng Date: Sat, 25 Jun 2022 15:36:09 +0800 Subject: [PATCH] [zh-cn] Resync kubeadm init page --- .../setup-tools/kubeadm/kubeadm-init.md | 158 ++++++++++-------- 1 file changed, 87 insertions(+), 71 deletions(-) diff --git a/content/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init.md b/content/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init.md index c53ca16be0..7c3d801dc8 100644 --- a/content/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init.md +++ b/content/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init.md @@ -12,6 +12,7 @@ title: kubeadm init content_type: concept weight: 20 --> + -### 在 kubeadm 中使用 init phases {#init-phases} +### 在 kubeadm 中使用 init 阶段 {#init-phases} Kubeadm 允许你使用 `kubeadm init phase` 命令分阶段创建控制平面节点。 @@ -219,10 +220,10 @@ Alternatively, you can use the `skipPhases` field under `InitConfiguration`. --> ### 结合一份配置文件来使用 kubeadm init {#config-file} +{{< caution >}} -{{< caution >}} 配置文件的功能仍然处于 alpha 状态并且在将来的版本中可能会改变。 {{< /caution >}} @@ -294,7 +295,7 @@ List of feature gates: --> 特性门控的列表: -{{< table caption="kubeadm feature gates" >}} +{{< table caption="kubeadm 特性门控" >}} 特性 | 默认值 | Alpha | Beta :-------|:--------|:------|:----- `PublicKeysECDSA` | `false` | 1.19 | - @@ -302,11 +303,11 @@ List of feature gates: `UnversionedKubeletConfigMap` | `true` | 1.22 | 1.23 {{< /table >}} +{{< note >}} -{{< note >}} -一旦特性门控变成了 GA,那它将会从这个列表中移除,因为它的值会被默认锁定为 `true` 。 +一旦特性门控变成了 GA,那它将会从这个列表中移除,因为它的值会被默认锁定为 `true`。 {{< /note >}} -### 添加 kube-proxy 参数 {#kube-proxy} - +### 添加 kube-proxy 参数 {#kube-proxy} + kubeadm 配置中有关 kube-proxy 的说明请查看: - [kube-proxy 参考](/zh-cn/docs/reference/config-api/kube-proxy-config.v1alpha1/) @@ -392,28 +390,27 @@ kubeadm 配置中有关 kube-proxy 的说明请查看: ### 向控制平面组件传递自定义的命令行参数 {#control-plane-flags} - 有关向控制平面组件传递命令行参数的说明请查看: -[控制平面命令行参数](/zh-cn/docs/setup/production-environment/tools/kubeadm/control-plane-flags/) + +- [控制平面命令行参数](/zh-cn/docs/setup/production-environment/tools/kubeadm/control-plane-flags/) ### 在没有互联网连接的情况下运行 kubeadm {#without-internet-connection} - 要在没有互联网连接的情况下运行 kubeadm,你必须提前拉取所需的控制平面镜像。 - 你可以使用 `kubeadm config images` 子命令列出并拉取镜像: ```shell @@ -425,7 +422,8 @@ kubeadm config images pull You can pass `--config` to the above commands with a [kubeadm configuration file](#config-file) to control the `kubernetesVersion` and `imageRepository` fields. --> -你可以通过 `--config` 把 [kubeadm 配置文件](#config-file) 传递给上述命令来控制 `kubernetesVersion` 和 `imageRepository` 字段。 +你可以通过 `--config` 把 [kubeadm 配置文件](#config-file) 传递给上述命令来控制 +`kubernetesVersion` 和 `imageRepository` 字段。 -### 使用自定义的镜像 {#custom-images} - -默认情况下, kubeadm 会从 `k8s.gcr.io` 仓库拉取镜像。如果请求的 Kubernetes 版本是 CI 标签 +### 使用自定义的镜像 {#custom-images} + +默认情况下,kubeadm 会从 `k8s.gcr.io` 仓库拉取镜像。如果请求的 Kubernetes 版本是 CI 标签 (例如 `ci/latest`),则使用 `gcr.io/k8s-staging-ci-images`。 -你可以通过使用[带有配置文件的 kubeadm](#config-file) 来重写此操作。 - - +你可以通过使用[带有配置文件的 kubeadm](#config-file) 来重写此操作。 允许的自定义功能有: * 提供影响镜像版本的 `kubernetesVersion`。 @@ -465,12 +460,13 @@ Allowed customization are: * 为 etcd 或 CoreDNS 提供特定的 `imageRepository` 和 `imageTag`。 -由于向后兼容的原因,`imageRepository` 可能会有所不同。 -例如,某镜像的子路径可能是 `k8s.gcr.io/subpath/image`, +由于向后兼容的原因,使用 `imageRepository` 所指定的定制镜像库可能与默认的 +`k8s.gcr.io` 镜像路径不同。例如,某镜像的子路径可能是 `k8s.gcr.io/subpath/image`, 但使用自定义仓库时默认为 `my.customrepository.io/image`。 * 使用 `kubeadm config images {list|pull}` 从 `k8s.gcr.io` 的默认路径中拉取镜像。 * 将镜像推送到 `kubeadm config images list --config=config.yaml` 的路径, -其中 `config.yaml` 包含自定义的 `imageRepository` 和/或用于 etcd 和 CoreDNS 的 `imageTag`。 + 其中 `config.yaml` 包含自定义的 `imageRepository` 和/或用于 etcd 和 CoreDNS 的 `imageTag`。 * 将相同的 `config.yaml` 传递给 `kubeadm init`。 + +#### 定制沙箱(pause)镜像 {#custom-pause-image} + +如果需要为这些组件设置定制的镜像,你需要在你的{{< glossary_tooltip text="容器运行时" term_id="container-runtime" >}} +中完成一些配置。参阅你的容器运行时的文档以了解如何改变此设置。 +对于某些容器运行时而言, +你可以在[容器运行时](/zh-cn/docs/setup/production-environment/container-runtimes/) +主题下找到一些建议。 -### 将控制平面证书上传到集群 - +### 将控制平面证书上传到集群 {#uploading-control-plane-certificates-to-the-cluster} + 通过将参数 `--upload-certs` 添加到 `kubeadm init`,你可以将控制平面证书临时上传到集群中的 Secret。 请注意,此 Secret 将在 2 小时后自动过期。证书使用 32 字节密钥加密,可以使用 `--certificate-key` 指定。 通过将 `--control-plane` 和 `--certificate-key` 传递给 `kubeadm join`, @@ -522,40 +534,39 @@ kubeadm init phase upload-certs --upload-certs --certificate-key=SOME_VALUE --co 如果未将参数 `--certificate-key` 传递给 `kubeadm init` 和 `kubeadm init phase upload-certs`, 则会自动生成一个新密钥。 - 以下命令可用于按需生成新密钥: ```shell kubeadm certs certificate-key ``` - -### 使用 kubeadm 管理证书 + -有关使用 kubeadm 进行证书管理的详细信息,请参阅 -[使用 kubeadm 进行证书管理](/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 +### 使用 kubeadm 管理证书 {#certificate-management-with-kubeadm} + +有关使用 kubeadm 进行证书管理的详细信息, +请参阅[使用 kubeadm 进行证书管理](/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)。 该文档包括有关使用外部 CA,自定义证书和证书更新的信息。 ### 管理 kubeadm 为 kubelet 提供的 systemd 配置文件 {#kubelet-drop-in} - `kubeadm` 包自带了关于 `systemd` 如何运行 `kubelet` 的配置文件。 请注意 `kubeadm` 客户端命令行工具永远不会修改这份 `systemd` 配置文件。 这份 `systemd` 配置文件属于 kubeadm DEB/RPM 包。 @@ -563,59 +574,61 @@ The `kubeadm` package ships with a configuration file for running the `kubelet` -有关更多信息,请阅读 -[管理 systemd 的 kubeadm 内嵌文件](/zh-cn/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#the-kubelet-drop-in-file-for-systemd)。 +有关更多信息,请阅读[管理 systemd 的 kubeadm 内嵌文件](/zh-cn/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#the-kubelet-drop-in-file-for-systemd)。 -### 结合 CRI 运行时使用 kubeadm - +### 结合 CRI 运行时使用 kubeadm {#use-kubeadm-with-cri-runtimes} + 默认情况下,kubeadm 尝试检测你的容器运行环境。有关此检测的更多详细信息,请参见 [kubeadm CRI 安装指南](/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-runtime)。 -### 设置节点的名称 - -默认情况下, `kubeadm` 基于机器的主机地址分配一个节点名称。你可以使用 `--node-name` 参数覆盖此设置。 -此标识将合适的 -[`--hostname-override`](/zh-cn/docs/reference/command-line-tools-reference/kubelet/#options) +### 设置节点的名称 {#setting-the-node-name} + +默认情况下,`kubeadm` 基于机器的主机地址分配一个节点名称。你可以使用 `--node-name` 参数覆盖此设置。 +此标识将合适的 [`--hostname-override`](/zh-cn/docs/reference/command-line-tools-reference/kubelet/#options) 值传递给 kubelet。 -### kubeadm 自动化 +要注意,重载主机名可能会[与云驱动发生冲突](https://github.com/kubernetes/website/pull/8873)。 +### kubeadm 自动化 {#automating-kubeadm} + 除了像文档 [kubeadm 基础教程](/zh-cn/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) 中所描述的那样,将从 `kubeadm init` 取得的令牌复制到每个节点, 你还可以并行地分发令牌以实现简单自动化。 要实现自动化,你必须知道控制平面节点启动后将拥有的 IP 地址,或使用 DNS 名称或负载均衡器的地址。 -1. 生成一个令牌。这个令牌必须具有以下格式:`< 6 个字符的字符串>.< 16 个字符的字符串>`。 +1. 生成一个令牌。这个令牌必须具有以下格式:`<6 个字符的字符串>.<16 个字符的字符串>`。 更加正式的说法是,它必须符合以下正则表达式:`[a-z0-9]{6}\.[a-z0-9]{16}`。 kubeadm 可以为你生成一个令牌: @@ -625,14 +638,16 @@ kubeadm can generate a token for you: ``` 2. 使用这个令牌同时启动控制平面节点和工作节点。它们一旦运行起来应该就会互相寻找对方并且建立集群。 同样的 `--token` 参数可以同时用于 `kubeadm init` 和 `kubeadm join` 命令。 3. 当加入其他控制平面节点时,可以对 `--certificate-key` 执行类似的操作。可以使用以下方式生成密钥: @@ -653,8 +668,9 @@ it does not allow the root CA hash to be validated with `-discovery-token-ca-cert-hash` (since it's not generated when the nodes are provisioned). For details, see the [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/). --> -注意这种搭建集群的方式在安全保证上会有一些宽松,因为这种方式不允许使用 `--discovery-token-ca-cert-hash` -来验证根 CA 的哈希值(因为当配置节点的时候,它还没有被生成)。 +注意这种搭建集群的方式在安全保证上会有一些宽松,因为这种方式不允许使用 +`--discovery-token-ca-cert-hash` 来验证根 CA 的哈希值 +(因为当配置节点的时候,它还没有被生成)。 更多信息请参阅 [kubeadm join](/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-join/) 文档。 ## {{% heading "whatsnext" %}} @@ -666,7 +682,7 @@ provisioned). For details, see the [kubeadm join](/docs/reference/setup-tools/ku * [kubeadm upgrade](/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/) to upgrade a Kubernetes cluster to a newer version * [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) to revert any changes made to this host by `kubeadm init` or `kubeadm join` --> -* 进一步阅读了解 [kubeadm init phase](/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/) +* 进一步阅读了解 [kubeadm init 阶段](/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/) * [kubeadm join](/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-join/) 启动一个 Kubernetes 工作节点并且将其加入到集群 * [kubeadm upgrade](/zh-cn/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)