1

hyperkube用来启动kube-controller-managerdocker 容器。为了轮换 kubernetes CA,我遵循了这个文档。我必须指出 KCMclient-cacluster-signing-cert不同的证书。自动化这很困难,因为 KCM 进程使用命令行参数。

我在这里看不到任何选项。有谁知道将命令行参数迁移到config.yaml文件的方法kube-controller-manager

注意:我的问题是关于使用配置文件启动 KCM 流程,就像我们在这里为 kubelets 提供的一样。

4

1 回答 1

1

通过提供 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

你可以改变使用ClusterConfiguration这样extraArgs[参考]

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 文件作为参数传递的标志(您可以在此处检查所有可用标志)。

唯一可能的解决方案是上述两个。

于 2021-08-05T09:46:24.580 回答