树叶云kubernetes教程:Kubernetes 使用kubeadm配置集群中的每个kubelet

使用 kubeadm 配置集群中的每个 kubelet

Note: Dockershim 自 1.24 版起已从 Kubernetes 项目中删除。

FEATURE STATE: Kubernetes v1.11 [stable]

kubeadm CLI 工具的生命周期与 kubelet 解耦;kubelet 是一个守护程序,在 Kubernetes 集群中的每个节点上运行。 当 Kubernetes 初始化或升级时,kubeadm CLI 工具由用户执行,而 kubelet 始终在后台运行。

由于kubelet是守护程序,因此需要通过某种初始化系统或服务管理器进行维护。 当使用 DEB 或 RPM 安装 kubelet 时,配置系统去管理 kubelet。 你可以改用其他服务管理器,但需要手动地配置。

集群中涉及的所有 kubelet 的一些配置细节都必须相同, 而其他配置方面则需要基于每个 kubelet 进行设置,以适应给定机器的不同特性(例如操作系统、存储和网络)。 你可以手动地管理 kubelet 的配置,但是 kubeadm 现在提供一种 ​KubeletConfiguration ​API 类型 用于集中管理 kubelet 的配置。

Kubelet 配置模式 

以下各节讲述了通过使用 kubeadm 简化 kubelet 配置模式,而不是在每个节点上手动地管理 kubelet 配置。

将集群级配置传播到每个 kubelet 中 

你可以通过 ​kubeadm init​ 和 ​kubeadm join​ 命令为 kubelet 提供默认值。 有趣的示例包括使用其他容器运行时或通过服务器设置不同的默认子网。

如果你想使用子网 ​10.96.0.0/12​ 作为服务的默认网段,你可以给 kubeadm 传递 ​--service-cidr​ 参数:

kubeadm init --service-cidr 10.96.0.0/12

现在,可以从该子网分配服务的虚拟 IP。 你还需要通过 kubelet 使用 ​--cluster-dns​ 标志设置 DNS 地址。 在集群中的每个管理器和节点上的 kubelet 的设置需要相同。 kubelet 提供了一个版本化的结构化 API 对象,该对象可以配置 kubelet 中的大多数参数,并将此配置推送到集群中正在运行的每个 kubelet 上。 此对象被称为 ​KubeletConfiguration​。 ​KubeletConfiguration ​允许用户指定标志,例如用骆峰值代表集群的 DNS IP 地址,如下所示:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
clusterDNS:
- 10.96.0.10

提供特定于某实例的配置细节 

由于硬件、操作系统、网络或者其他主机特定参数的差异。某些主机需要特定的 kubelet 配置。 以下列表提供了一些示例。

  • 由 kubelet 配置标志 ​--resolv-conf​ 指定的 DNS 解析文件的路径在操作系统之间可能有所不同, 它取决于你是否使用 ​systemd-resolved​。 如果此路径错误,则在其 kubelet 配置错误的节点上 DNS 解析也将失败。
  • 除非你使用云驱动,否则默认情况下 Node API 对象的 ​.metadata.name​ 会被设置为计算机的主机名。 如果你需要指定一个与机器的主机名不同的节点名称,你可以使用 ​--hostname-override​ 标志覆盖默认值。
  • 当前,kubelet 无法自动检测容器运行时使用的 cgroup 驱动程序, 但是值 ​--cgroup-driver​ 必须与容器运行时使用的 cgroup 驱动程序匹配,以确保 kubelet 的健康运行状况。
  • 要指定容器运行时,你必须用 ​--container-runtime-endpoint=<path>​ 标志来指定端点。

你可以在服务管理器(例如 systemd)中设定某个 kubelet 的配置来指定这些参数。

使用 kubeadm 配置 kubelet 

如果自定义的 ​KubeletConfiguration ​API 对象使用像 ​kubeadm ... --config some-config-file.yaml​ 这样的配置文件进行传递,则可以配置 kubeadm 启动的 kubelet。

通过调用 ​kubeadm config print init-defaults --component-configs KubeletConfiguration​, 你可以看到此结构中的所有默认值。

使用 kubeadm init 时的工作流程 

当调用 ​kubeadm init​ 时,kubelet 的配置会被写入磁盘 ​/var/lib/kubelet/config.yaml​, 并上传到集群 ​kube-system​ 命名空间的 ​kubelet-config​ ConfigMap。 kubelet 配置信息也被写入 ​/etc/kubernetes/kubelet.conf​,其中包含集群内所有 kubelet 的基线配置。 此配置文件指向允许 kubelet 与 API 服务器通信的客户端证书。 这解决了将集群级配置传播到每个 kubelet 的需求。

针对为特定实例提供配置细节的第二种模式, kubeadm 的解决方法是将环境文件写入 ​/var/lib/kubelet/kubeadm-flags.env​,其中包含了一个标志列表, 当 kubelet 启动时,该标志列表会传递给 kubelet 标志在文件中的显示方式如下:

KUBELET_KUBEADM_ARGS="--flag1=value1 --flag2=value2 ..."

除了启动 kubelet 时所使用的标志外,该文件还包含动态参数,例如 cgroup 驱动程序以及是否使用其他容器运行时套接字(​--cri-socket​)。

将这两个文件编组到磁盘后,如果使用 systemd,则 kubeadm 尝试运行以下两个命令:

systemctl daemon-reload && systemctl restart kubelet

如果重新加载和重新启动成功,则正常的 ​kubeadm init​ 工作流程将继续。

使用 kubeadm join 时的工作流程 

当运行 ​kubeadm join​ 时,kubeadm 使用 Bootstrap Token 证书执行 TLS 引导,该引导会获取一份证书, 该证书需要下载 ​kubelet-config​ ConfigMap 并把它写入 ​/var/lib/kubelet/config.yaml​ 中。 动态环境文件的生成方式恰好与 ​kubeadm init​ 完全相同。

接下来,​kubeadm ​运行以下两个命令将新配置加载到 kubelet 中:

systemctl daemon-reload && systemctl restart kubelet

在 kubelet 加载新配置后,kubeadm 将写入 ​/etc/kubernetes/bootstrap-kubelet.conf​ KubeConfig 文件中, 该文件包含 CA 证书和引导程序令牌。 kubelet 使用这些证书执行 TLS 引导程序并获取唯一的凭据,该凭据被存储在 ​/etc/kubernetes/kubelet.conf​ 中。

当 ​/etc/kubernetes/kubelet.conf​ 文件被写入后,kubelet 就完成了 TLS 引导过程。 Kubeadm 在完成 TLS 引导过程后将删除 ​/etc/kubernetes/bootstrap-kubelet.conf​ 文件。

kubelet 的 systemd drop-in 文件 

kubeadm ​中附带了有关系统如何运行 kubelet 的 systemd 配置文件。 请注意 kubeadm CLI 命令不会修改此文件。

通过 ​kubeadm ​DEB 包 或者 RPM 包 安装的配置文件被写入 ​/etc/systemd/system/kubelet.service.d/10-kubeadm.conf​ 并由 systemd 使用。 它对原来的 RPM 版本 ​kubelet.service​ 或者 DEB 版本 ​kubelet.service​ 作了增强:

[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# 这是 "kubeadm init" 和 "kubeadm join" 运行时生成的文件,动态地填充 KUBELET_KUBEADM_ARGS 变量
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# 这是一个文件,用户在不得已下可以将其用作替代 kubelet args。
# 用户最好使用 .NodeRegistration.KubeletExtraArgs 对象在配置文件中替代。
# KUBELET_EXTRA_ARGS 应该从此文件中获取。
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS

此文件指定由 kubeadm 为 kubelet 管理的所有文件的默认位置。

  • 用于 TLS 引导程序的 KubeConfig 文件为 ​/etc/kubernetes/bootstrap-kubelet.conf​, 但仅当 ​/etc/kubernetes/kubelet.conf​ 不存在时才能使用。
  • 具有唯一 kubelet 标识的 KubeConfig 文件为 ​/etc/kubernetes/kubelet.conf​。
  • 包含 kubelet 的组件配置的文件为 ​/var/lib/kubelet/config.yaml​。
  • 包含的动态环境的文件 ​KUBELET_KUBEADM_ARGS​ 是来源于 ​/var/lib/kubelet/kubeadm-flags.env​。
  • 包含用户指定标志替代的文件 ​KUBELET_EXTRA_ARGS ​是来源于 ​/etc/default/kubelet​(对于 DEB),或者 ​/etc/sysconfig/kubelet​(对于 RPM)。 ​KUBELET_EXTRA_ARGS ​在标志链中排在最后,并且在设置冲突时具有最高优先级。

Kubernetes 可执行文件和软件包内容 

Kubernetes 版本对应的 DEB 和 RPM 软件包是:

软件包名称描述
kubeadm给 kubelet 安装 /usr/bin/kubeadm CLI 工具和 kubelet 的 systemd drop-in 文件。
kubelet安装 /usr/bin/kubelet 可执行文件。
kubectl安装 /usr/bin/kubectl 可执行文件。
cri-tools从 cri-tools git 仓库中安装 /usr/bin/crictl 可执行文件。
kubernetes-cni从 plugins git 仓库中安装 /opt/cni/bin 可执行文件。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/209587.html<

(0)
管理的头像管理
上一篇2025-04-09 13:09
下一篇 2025-04-09 13:11

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注