在实时集群中添加 apiserver extraArgs/extraVolumes

Add apiserver extraArgs/extraVolumes in a live cluster

我有一个 Kubernetes 集群 1.17,我想在 apiserver 中添加一些 extraArgsextraVolumes(如 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/)。通常,我更新清单文件 /etc/kubernetes/manifests/kube-apiserver.yaml 以应用我的新配置,然后我更新 kubeadm-config ConfigMap 以保留此新配置以用于下一次 Kubernetes 升级(因为静态 pod 清单是从此 ConfigMap 重新生成的升级时)。

是否可以仅更新 kubeadm-config ConfigMap,然后使用 kubeadm init phase control-plane apiserver 之类的命令应用配置?有什么风险?

这是升级 control plane componentsstatic pod definitions 的方式,而不是 init command I guess you meant upgrade

$ kubeadm upgrade 命令每次在应用更改之前从 ConfigMap ($ kubectl -n kube-system get cm kubeadm-config -o yaml) 查询当前集群配置。

谈到风险,您可以尝试通过研究 kubeadm upgrade diff 命令的输出来设想它们,例如

kubeadm upgrade diff v1.20.4this documentation. You could also try to use --dry-run flag from this doc 中有更多详细信息。它不会改变任何状态,它会显示将要执行的操作。

此外,您还可以从 this docs

中了解 --experimental-patches

如果你的意思是在实时集群中更改 apiserver 配置,你可以更改 /etc/kubernetes/manifest/kubeadm-apiserver.conf 以应用。

但是你必须小心,因为旧的静态 pod 会在新的 pod 就绪之前被杀死。