使用 kubeadm 定制控制平面配置

FEATURE STATE: Kubernetes 1.12 [stable]

kubeadm ClusterConfiguration 对象公开了 extraArgs 字段,它可以覆盖传递给控制平面组件(如 APIServer、ControllerManager 和 Scheduler)的默认参数。各组件配置使用如下字段定义:

  • apiServer
  • controllerManager
  • scheduler

extraArgs 字段由 key: value 对组成。 要覆盖控制平面组件的参数:

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

有关配置中的每个字段的详细信息,您可以导航到我们的 API 参考页面

说明:

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

APIServer 参数

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

使用示例:

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: ClusterConfiguration
  3. kubernetesVersion: v1.16.0
  4. apiServer:
  5. extraArgs:
  6. advertise-address: 192.168.0.103
  7. anonymous-auth: "false"
  8. enable-admission-plugins: AlwaysPullImages,DefaultStorageClass
  9. audit-log-path: /home/johndoe/audit.log

ControllerManager 参数

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

使用示例:

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

Scheduler 参数

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

使用示例:

  1. apiVersion: kubeadm.k8s.io/v1beta2
  2. kind: ClusterConfiguration
  3. kubernetesVersion: v1.16.0
  4. scheduler:
  5. extraArgs:
  6. address: 0.0.0.0
  7. config: /home/johndoe/schedconfig.yaml
  8. kubeconfig: /home/johndoe/kubeconfig.yaml