From 91139fba448462855c0a4a6964b3b3d77a2d5589 Mon Sep 17 00:00:00 2001 From: Sean Wei Date: Thu, 26 May 2022 16:46:00 +0800 Subject: [PATCH] [zh] Remove reviewer for kubelet-integration.md --- .../tools/kubeadm/kubelet-integration.md | 207 +++++++++--------- 1 file changed, 102 insertions(+), 105 deletions(-) diff --git a/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md b/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md index 260154f7d0..72ef69743e 100644 --- a/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md +++ b/content/zh/docs/setup/production-environment/tools/kubeadm/kubelet-integration.md @@ -1,6 +1,4 @@ --- -reviewers: -- sig-cluster-lifecycle title: 使用 kubeadm 配置集群中的每个 kubelet content_type: concept weight: 80 @@ -17,13 +15,13 @@ weight: 80 {{% dockershim-removal %}} -{{< feature-state for_k8s_version="1.11" state="stable" >}} +{{< feature-state for_k8s_version="v1.11" state="stable" >}} +## Kubelet 配置模式 {#kubelet-configuration-patterns} + -## Kubelet 配置模式 - 以下各节讲述了通过使用 kubeadm 简化 kubelet 配置模式,而不是在每个节点上手动地管理 kubelet 配置。 +### 将集群级配置传播到每个 kubelet 中 {#propagating-cluster-level-configuration-to-each-kubelet} + +你可以通过 `kubeadm init` 和 `kubeadm join` 命令为 kubelet 提供默认值。 +有趣的示例包括使用其他容器运行时或通过服务器设置不同的默认子网。 + +如果你想使用子网 `10.96.0.0/12` 作为服务的默认网段,你可以给 kubeadm 传递 `--service-cidr` 参数: ```bash kubeadm init --service-cidr 10.96.0.0/12 ``` + -### 将集群级配置传播到每个 kubelet 中 - -你可以通过使用 `kubeadm init` 和 `kubeadm join` 命令为 kubelet 提供默认值。 -有趣的示例包括使用其他容器运行时或通过服务器设置不同的默认子网。 - -如果你想使用子网 `10.96.0.0/12` 作为services的默认网段,你可以给 kubeadm 传递 `--service-cidr` 参数: - -```bash -kubeadm init --service-cidr 10.96.0.0/12 -``` - 现在,可以从该子网分配服务的虚拟 IP。 你还需要通过 kubelet 使用 `--cluster-dns` 标志设置 DNS 地址。 在集群中的每个管理器和节点上的 kubelet 的设置需要相同。 @@ -118,14 +106,23 @@ clusterDNS: - 10.96.0.10 ``` -有关 `KubeletConfiguration` 的更多详细信息,亲参阅[本节](#configure-kubelets-using-kubeadm)。 + +有关 `KubeletConfiguration` 的更多详细信息,请参阅[本节](#configure-kubelets-using-kubeadm)。 +### 提供特定于某实例的配置细节 {#providing-instance-specific-configuration-details} +由于硬件、操作系统、网络或者其他主机特定参数的差异。某些主机需要特定的 kubelet 配置。 +以下列表提供了一些示例。 + + -### 提供指定实例的详细配置信息 - -由于硬件、操作系统、网络或者其他主机特定参数的差异。某些主机需要特定的 kubelet 配置。 -以下列表提供了一些示例。 - - 由 kubelet 配置标志 `--resolv-conf` 指定的 DNS 解析文件的路径在操作系统之间可能有所不同, 它取决于你是否使用 `systemd-resolved`。 如果此路径错误,则在其 kubelet 配置错误的节点上 DNS 解析也将失败。 @@ -177,7 +169,7 @@ Also have a look at the [reference for the KubeletConfiguration](/docs/reference/config-api/kubelet-config.v1beta1/) for more information on the individual fields. --> -## 使用 kubeadm 配置 kubelet +## 使用 kubeadm 配置 kubelet {#configure-kubelets-using-kubeadm} 如果自定义的 `KubeletConfiguration` API 对象使用像 `kubeadm ... --config some-config-file.yaml` 这样的配置文件进行传递,则可以配置 kubeadm 启动的 kubelet。 @@ -189,7 +181,10 @@ for more information on the individual fields. +### 使用 `kubeadm init` 时的工作流程 {#workflow-when-using-kubeadm-init} + -### 当使用 `kubeadm init`时的工作流程 - 当调用 `kubeadm init` 时,kubelet 的配置会被写入磁盘 `/var/lib/kubelet/config.yaml`, 并上传到集群 `kube-system` 命名空间的 `kubelet-config` ConfigMap。 kubelet 配置信息也被写入 `/etc/kubernetes/kubelet.conf`,其中包含集群内所有 kubelet 的基线配置。 此配置文件指向允许 kubelet 与 API 服务器通信的客户端证书。 这解决了[将集群级配置传播到每个 kubelet](#propagating-cluster-level-configuration-to-each-kubelet) 的需求。 -该文档 [提供特定实例的配置详细信息](#providing-instance-specific-configuration-details) 是第二种解决模式, -kubeadm 将环境文件写入 `/var/lib/kubelet/kubeadm-flags.env`,其中包含了一个标志列表, + +针对[为特定实例提供配置细节](#providing-instance-specific-configuration-details)的第二种模式, +kubeadm 的解决方法是将环境文件写入 `/var/lib/kubelet/kubeadm-flags.env`,其中包含了一个标志列表, 当 kubelet 启动时,该标志列表会传递给 kubelet 标志在文件中的显示方式如下: ```bash KUBELET_KUBEADM_ARGS="--flag1=value1 --flag2=value2 ..." ``` -除了启动 kubelet 时使用该标志外,该文件还包含动态参数,例如 cgroup 驱动程序以及是否使用其他容器运行时 socket(`--cri-socket`)。 + +除了启动 kubelet 时所使用的标志外,该文件还包含动态参数,例如 cgroup 驱动程序以及是否使用其他容器运行时套接字(`--cri-socket`)。 + 将这两个文件编组到磁盘后,如果使用 systemd,则 kubeadm 尝试运行以下两个命令: ```bash systemctl daemon-reload && systemctl restart kubelet ``` + 如果重新加载和重新启动成功,则正常的 `kubeadm init` 工作流程将继续。 -### 当使用 `kubeadm join`时的工作流程 +### 使用 `kubeadm join` 时的工作流程 {#workflow-when-using-kubeadm-join} 当运行 `kubeadm join` 时,kubeadm 使用 Bootstrap Token 证书执行 TLS 引导,该引导会获取一份证书, 该证书需要下载 `kubelet-config` ConfigMap 并把它写入 `/var/lib/kubelet/config.yaml` 中。 @@ -288,10 +277,17 @@ Kubeadm 在完成 TLS 引导过程后将删除 `/etc/kubernetes/bootstrap-kubele +## kubelet 的 systemd drop-in 文件 {#the-kubelet-drop-in-file-for-systemd} + +`kubeadm` 中附带了有关系统如何运行 kubelet 的 systemd 配置文件。 +请注意 kubeadm CLI 命令不会修改此文件。 + +通过 `kubeadm` [DEB 包](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf) +或者 [RPM 包](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/rpm/kubeadm/10-kubeadm.conf) +安装的配置文件被写入 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 并由 systemd 使用。 +它对原来的 [RPM 版本 `kubelet.service`](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/rpm/kubelet/kubelet.service) +或者 [DEB 版本 `kubelet.service`](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service) +作了增强: + +{{< note >}} +下面的内容只是一个例子。如果你不想使用包管理器, +请遵循[没有包管理器](/zh/docs/setup/productionenvironment/tools/kubeadm/install-kubeadm/#k8s-install-2)) +章节的指南。 +{{< /note >}} + -## kubelet 的 systemd 文件 {#the-kubelet-drop-in-file-for-systemd} - -`kubeadm` 中附带了有关系统如何运行 kubelet 的 systemd 配置文件。 -请注意 kubeadm CLI 命令不会修改此文件。 - -通过 `kubeadm` [DEB](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf) -或者 [RPM 包](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/rpm/kubeadm/10-kubeadm.conf) -安装的配置文件被写入 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 并由系统使用。 -它对原来的 [RPM 版本 `kubelet.service`](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/rpm/kubelet/kubelet.service) -或者 [DEB 版本 `kubelet.service`](https://github.com/kubernetes/release/blob/master/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service) -作了增强: - -{{< note >}} -下面的内容只是一个例子。 如果你不想使用包管理器, -请遵循[没有包管理器](/zh/docs/setup/productionenvironment/tools/kubeadm/install-kubeadm/#k8s-install-2)) -部分中叙述的指南。 -{{< /note >}} - ```none [Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" @@ -364,8 +346,21 @@ ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS ``` -该文件为 kubelet 指定由 kubeadm 管理的所有文件的默认位置。 + +此文件指定由 kubeadm 为 kubelet 管理的所有文件的默认位置。 + - 用于 TLS 引导程序的 KubeConfig 文件为 `/etc/kubernetes/bootstrap-kubelet.conf`, 但仅当 `/etc/kubernetes/kubelet.conf` 不存在时才能使用。 - 具有唯一 kubelet 标识的 KubeConfig 文件为 `/etc/kubernetes/kubelet.conf`。 @@ -377,24 +372,26 @@ ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELE -## Kubernetes 可执行文件和软件包内容 +## Kubernetes 可执行文件和软件包内容 {#kubernetes-binaries-and-package-contents} + Kubernetes 版本对应的 DEB 和 RPM 软件包是: + +| 软件包名称 | 描述 | +|--------------|-------------| +| `kubeadm` | 给 kubelet 安装 `/usr/bin/kubeadm` CLI 工具和 [kubelet 的 systemd drop-in 文件](#the-kubelet-drop-in-file-for-systemd)。 | | `kubelet` | 安装 `/usr/bin/kubelet` 可执行文件。 | | `kubectl` | 安装 `/usr/bin/kubectl` 可执行文件。 | | `cri-tools` | 从 [cri-tools git 仓库](https://github.com/kubernetes-sigs/cri-tools)中安装 `/usr/bin/crictl` 可执行文件。 |