使用 kubeadm API 定制组件

    所有这些选项都可以通过 kubeadm 配置 API 实现。 有关配置中的每个字段的详细信息,你可以导航到我们的 API 参考页面

    说明:

    kubeadm 目前不支持对 CoreDNS 部署进行定制。 你必须手动更新 kube-system/coredns 并在更新后重新创建 CoreDNS Pod。 或者,你可以跳过默认的 CoreDNS 部署并部署你自己的 CoreDNS 变种。 有关更多详细信息,请参阅.

    说明:

    要重新配置已创建的集群,请参阅重新配置 kubeadm 集群

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

    • apiServer
    • controllerManager
    • scheduler

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

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

    说明:

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

    说明:

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

    说明:

    有关详细信息,请参阅 kube-apiserver 参考文档

    使用示例:

    有关详细信息,请参阅 kube-controller-manager 参考文档

    使用示例:

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

    有关详细信息,请参阅 kube-scheduler 参考文档

    使用示例:

    有关详细信息,请参阅 etcd 服务文档.

    使用示例:

    1. etcd:
    2. local:
    3. extraArgs:
    4. election-timeout: 1000

    特性状态: Kubernetes v1.22 [beta]

    Kubeadm 允许将包含补丁文件的目录传递给各个节点上的 InitConfigurationJoinConfiguration。 这些补丁可被用作组件配置写入磁盘之前的最后一个自定义步骤。

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

    说明:

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

    1. apiVersion: kubeadm.k8s.io/v1beta3
    2. kind: JoinConfiguration
    3. patches:
    4. directory: /home/user/somedir

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

    • target 可以是 kube-apiserverkube-controller-managerkube-scheduler、 和 kubeletconfiguration 之一。
    • patchtype 可以是 strategymergejson 之一,并且这些必须匹配 kubectl 支持 的补丁格式。 默认补丁类型是 strategic 的。
    • extension 必须是 jsonyaml

    说明:

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

    要自定义 kubelet,你可以在同一配置文件中的 ClusterConfigurationInitConfiguration 之外添加一个 KubeletConfiguration,用 --- 分隔。 然后可以将此文件传递给 kubeadm init,kubeadm 会将相同的 KubeletConfiguration 配置应用于集群中的所有节点。

    要在基础 KubeletConfiguration 上应用特定节点的配置,你可以使用 。

    或者你可以使用 kubelet 参数进行覆盖,方法是将它们传递到 InitConfigurationJoinConfiguration 支持的 nodeRegistration.kubeletExtraArgs 字段中。一些 kubelet 参数已被弃用, 因此在使用这些参数之前,请在 kubelet 参考文档 中检查它们的状态。

    更多详情,请参阅

    要自定义 kube-proxy,你可以在 ClusterConfigurationInitConfiguration 之外添加一个由 --- 分隔的 KubeProxyConfiguration, 传递给 。

    可以导航到 查看更多详情,

    说明:

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