我有一个Kubernetes集群1.17,我想在apisserver中添加一些extraArgs
和extraVolumes
(如https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/)。通常,我更新清单文件/etc/kubernetes/manifests/kube-apiserver.yaml
来应用我的新配置,然后我更新kubeadm-config
ConfigMap来为下一个Kubernetes升级保留这个新配置(因为升级时从这个ConfigMap重新生成静态pod清单)。
是否有可能只更新kubeadm-config
ConfigMap,然后使用kubeadm init phase control-plane apiserver
这样的命令应用配置?有哪些风险?
这是升级control plane components
的static pod definitions
的方法,但不是init命令,我猜你的意思是升级。
$ kubeadm upgrade
命令每次在应用更改之前从ConfigMap ($ kubectl -n kube-system get cm kubeadm-config -o yaml
)中查询当前集群配置。
说到风险,你可以通过研究kubeadm upgrade diff命令的输出来设想它们,例如
kubeadm upgrade diff v1.20.4
。更多细节见本文档。你也可以尝试使用--dry-run
标志从这个文档。它不会改变任何状态,它会显示将要执行的操作。
另外,您还可以从这个文档
中阅读--experimental-patches
。如果你的意思是在一个运行的集群中修改apiserver配置,你可以修改/etc/kubernetes/manifest/kubeadm-apiserver.conf来应用。
但是你必须小心,因为旧的静态pod会在新pod准备好之前被杀死。