如何使用配置文件启动 kube-controller-manager?

时间:2021-07-30 23:54:24

标签: kubernetes kube-controller-manager

我正在使用 hyperkube 启动 kube-controller-manager docker 容器。为了轮换 kubernetes CA,我遵循了 this doc。我必须将 KCM client-cacluster-signing-cert 指向不同的证书。自动执行此操作很困难,因为 KCM 进程使用命令行参数。

我没有看到任何选项 here。有人知道将命令行参数迁移到 config.yamlkube-controller-manager 文件的方法吗?

注意:我的问题是关于使用配置文件启动 KCM 进程,就像我们为 kubelets here 设置一个一样。

1 个答案:

答案 0 :(得分:0)

通过提供 YAML 文件,有两种可能的方式使用自定义设置启动 kube-controller-manager。

方法#1

kube-controller-manager 在您的控制平面中作为 Pod 运行。它的配置文件位于 /etc/kubernetes/manifests,一个 kube-controller-manager.yaml。通过像这样添加 .spec.containers.command

spec:
  containers:
  - command:
    - kube-controller-manager
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
...

您可以更改默认设置。

然后你就必须重启docker(或containerd)

sudo systemctl restart docker (or containerd)

或者,如果您只想重新启动 kube-controller-manager

docker restart kube-controller-mamnager

方法#2

您可以像这样将 ClusterConfigurationextraArgs 一起使用[reference]

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"

为此,您必须提取当前的集群配置

kubeadm config view > kubeadm-config.yaml

相应地编辑此文件,然后升级控制平面

kubeadm upgrade apply --config kubeadm-config.yaml

现在,回答您的问题 - kube-controller-manager 不支持 --config 或任何其他允许您将 YAML 文件作为参数传递的标志(您可以检查所有可用标志 {{3} }).

唯一可能的解决方案是以上两种。