如何使用配置文件启动 kube-controller-manager?
How can I start kube-controller-manager with config file?
我正在使用 hyperkube
启动 kube-controller-manager
docker 容器。为了轮换 kubernetes CA,我遵循了 this doc。我必须将 KCM client-ca
和 cluster-signing-cert
指向不同的证书。自动化很难,因为 KCM 进程使用命令行参数。
我没有看到任何选项 here。有谁知道将命令行参数迁移到 kube-controller-manager
的 config.yaml
文件的方法?
注意:我的问题是关于使用配置文件启动 KCM 进程,就像我们为 kubelet 启动 KCM 进程一样 here。
有两种可能的方式通过提供 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
方法#2
您可以像这样将 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 文件作为参数传递的标志(你可以检查所有可用的标志 here).
只有以上两种可能的解决方案。
我正在使用 hyperkube
启动 kube-controller-manager
docker 容器。为了轮换 kubernetes CA,我遵循了 this doc。我必须将 KCM client-ca
和 cluster-signing-cert
指向不同的证书。自动化很难,因为 KCM 进程使用命令行参数。
我没有看到任何选项 here。有谁知道将命令行参数迁移到 kube-controller-manager
的 config.yaml
文件的方法?
注意:我的问题是关于使用配置文件启动 KCM 进程,就像我们为 kubelet 启动 KCM 进程一样 here。
有两种可能的方式通过提供 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
方法#2
您可以像这样将 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 文件作为参数传递的标志(你可以检查所有可用的标志 here).
只有以上两种可能的解决方案。