树叶云kubernetes教程:Kubernetes 使用kubeadm API定制组件

使用 kubeadm API 定制组件

本页面介绍了如何自定义 kubeadm 部署的组件。 你可以使用 ​ClusterConfiguration ​结构中定义的参数,或者在每个节点上应用补丁来定制控制平面组件。 你可以使用 ​KubeletConfiguration ​和 ​KubeProxyConfiguration ​结构分别定制 kubelet 和 kube-proxy 组件。

所有这些选项都可以通过 kubeadm 配置 API 实现。

Note:

kubeadm 目前不支持对 CoreDNS 部署进行定制。 你必须手动更新 ​
kube-system/coredns​ ConfigMap 并在更新后重新创建 CoreDNS Pods。 或者,你可以跳过默认的 CoreDNS 部署并部署你自己的 CoreDNS 变种。

使用 ClusterConfiguration 中的标志自定义控制平面 

kubeadm ​ClusterConfiguration ​对象为用户提供了一种方法, 用以覆盖传递给控制平面组件(如 APIServer、ControllerManager、Scheduler 和 Etcd)的默认参数。 各组件配置使用如下字段定义:

  • apiServer
  • controllerManager
  • scheduler
  • etcd

这些结构包含一个通用的 ​extraArgs ​字段,该字段由 ​key: value​ 组成。 要覆盖控制平面组件的参数:

  1. 将适当的字段 ​extraArgs ​添加到配置中。
  2. 向字段 ​extraArgs ​添加要覆盖的参数值。
  3. 用 ​--config <YOUR CONFIG YAML>​ 运行 ​kubeadm init​。

Note:

你可以通过运行 ​
kubeadm config print init-defaults​ 并将输出保存到你所选的文件中, 以默认值形式生成 ​
ClusterConfiguration ​对象。

Note:


ClusterConfiguration ​对象目前在 kubeadm 集群中是全局的。 这意味着你添加的任何标志都将应用于同一组件在不同节点上的所有实例。 要在不同节点上为每个组件应用单独的配置,你可以使用补丁。

Note:

当前不支持重复的参数(keys)或多次传递相同的参数 ​
--foo​。 要解决此问题,你必须使用补丁。

APIServer 参数 

使用示例:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
apiServer:
  extraArgs:
    anonymous-auth: "false"
    enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
    audit-log-path: /home/johndoe/audit.log

ControllerManager 参数 

使用示例:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
controllerManager:
  extraArgs:
    cluster-signing-key-file: /home/johndoe/keys/ca.key
    deployment-controller-sync-period: "50"

Scheduler 参数 

使用示例:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:
  extraArgs:
    config: /etc/kubernetes/scheduler-config.yaml
  extraVolumes:
    - name: schedulerconfig
      hostPath: /home/johndoe/schedconfig.yaml
      mountPath: /etc/kubernetes/scheduler-config.yaml
      readOnly: true
      pathType: "File"

Etcd 参数 

使用示例:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
etcd:
  local:
    extraArgs:
      election-timeout: 1000

使用补丁定制控制平面 

FEATURE STATE: Kubernetes v1.22 [beta]

Kubeadm 允许将包含补丁文件的目录传递给各个节点上的 ​InitConfiguration ​和 ​JoinConfiguration​。 这些补丁可被用作控制平面组件清单写入磁盘之前的最后一个自定义步骤。

可以使用 ​--config <你的 YAML 格式控制文件>​ 将配置文件传递给 ​kubeadm init​:

apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
patches:
  directory: /home/user/somedir

Note:

对于 ​
kubeadm init​,你可以传递一个包含 ​
ClusterConfiguration ​和 ​
InitConfiguration ​的文件,以 ​
---​ 分隔。

你可以使用 ​--config <你的 YAML 格式配置文件>​ 将配置文件传递给 ​kubeadm join​:

apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
patches:
  directory: /home/user/somedir

补丁目录必须包含名为 ​target[suffix][+patchtype].extension​ 的文件。 例如,​kube-apiserver0+merge.yaml​ 或只是 ​etcd.json​。

  • target ​可以是 ​kube-apiserver​、​kube-controller-manager​、​kube-scheduler​ 和 ​etcd ​之一。
  • patchtype ​可以是 ​strategy​、​merge ​或 ​json ​之一,并且这些必须匹配 kubectl 支持 的补丁格式。 默认补丁类型是 ​strategic ​的。
  • extension ​必须是 ​json ​或 ​yaml​。
  • suffix ​是一个可选字符串,可用于确定首先按字母数字应用哪些补丁。

Note:

如果你使用 ​
kubeadm upgrade​ 升级 kubeadm 节点,你必须再次提供相同的补丁,以便在升级后保留自定义配置。 为此,你可以使用 ​
--patches​ 参数,该参数必须指向同一目录。 ​
kubeadm upgrade​ 目前不支持用于相同目的的 API 结构配置。

自定义 kubelet 

要自定义 kubelet,你可以在同一配置文件中的 ​ClusterConfiguration ​或 ​InitConfiguration ​之外添加一个 ​KubeletConfiguration​,用 ​---​ 分隔。 然后可以将此文件传递给 ​kubeadm init​。

Note:

kubeadm 将相同的 ​
KubeletConfiguration ​配置应用于集群中的所有节点。 要应用节点特定设置,你可以使用 ​
kubelet ​参数进行覆盖,方法是将它们传递到 ​
InitConfiguration ​和 ​
JoinConfiguration ​支持的 ​
nodeRegistration.kubeletExtraArgs​ 字段中。

自定义 kube-proxy 

要自定义 kube-proxy,你可以在 ​ClusterConfiguration ​或 ​InitConfiguration ​之外添加一个 由 ​---​ 分隔的 ​KubeProxyConfiguration​, 传递给 ​kubeadm init​。

Note:

kubeadm 将 kube-proxy 部署为 DaemonSet, 这意味着 ​
KubeProxyConfiguration ​将应用于集群中的所有 kube-proxy 实例。

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

(0)
运维的头像运维
上一篇2025-04-07 20:12
下一篇 2025-04-07 20:13

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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