我正在使用 hyperkube
启动 kube-controller-manager
docker 容器。为了轮换 kubernetes CA,我遵循了 this doc。我必须将 KCM client-ca
和 cluster-signing-cert
指向不同的证书。自动执行此操作很困难,因为 KCM 进程使用命令行参数。
我没有看到任何选项 here。有人知道将命令行参数迁移到 config.yaml
的 kube-controller-manager
文件的方法吗?
注意:我的问题是关于使用配置文件启动 KCM 进程,就像我们为 kubelets here 设置一个一样。
答案 0 :(得分:0)
通过提供 YAML 文件,有两种可能的方式使用自定义设置启动 kube-controller-manager。
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
您可以像这样将 ClusterConfiguration
与 extraArgs
一起使用[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} }).
唯一可能的解决方案是以上两种。