我正在尝试向我的 kubernetes 控制器管理器添加一些额外的标志,并且我正在更新 /etc/kubernetes/manifests/kube-controller-manager.yaml 文件中的标志。但是我添加的更改没有生效。kubelet 正在检测文件的更改并重新启动 pod,但一旦重新启动,它们就会返回旧标志。
有任何想法吗?
我正在尝试向我的 kubernetes 控制器管理器添加一些额外的标志,并且我正在更新 /etc/kubernetes/manifests/kube-controller-manager.yaml 文件中的标志。但是我添加的更改没有生效。kubelet 正在检测文件的更改并重新启动 pod,但一旦重新启动,它们就会返回旧标志。
有任何想法吗?
所以似乎 /etc/kubernetes/manifests 下的任何文件都是由 kubelet 加载的。因此,当我添加新标志时,我正在使用 .bak 扩展名备份现有文件,但 kubelet 仍在加载 .bak 文件而不是新的 .yaml 文件。在我看来,这是一个错误。无论如何,很高兴发现错误。
其背后的原因是容器使用旧标志启动,当您传递新标志并且kube-controller-manager
pod 重新启动(pod restart doesn't mean container restart
)但kube-controller-manager container
仍在使用旧标志时。
使用以下命令检查它:
docker ps --no-trunc | grep "kube-controller-manager --"
dcc828aa22aae3c6bb3c4ba31d0cfcac669b9c47e4cf50af580ebbb334bfea9f sha256:40c8d10b2d11cbc3db2e373a5ffce60dd22dbbf6236567f28ac6abb7efbfc8a9 "kube-controller-manager --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --cluster-signing-key-file=/etc/kubernetes/pki/ca.key --pod-eviction-timeout=30s --leader-elect=true --use-service-account-credentials=true --controllers=*,bootstrapsigner,tokencleaner --root-ca-file=/etc/kubernetes/pki/ca.crt --address=127.0.0.1 --kubeconfig=/etc/kubernetes/controller-manager.conf --service-account-private-key-file=/etc/kubernetes/pki/sa.key --allocate-node-cidrs=true --cluster-cidr=192.168.13.0/24 --node-cidr-mask-size=24"
更新文件中的标志后/etc/kubernetes/manifests/kube-controller-manager.yaml
,重新启动 kube-controller-manager 的 docker 容器,更改将生效。您可以使用以下命令重新启动 kube-controller-manager 容器:
docker restart $(docker ps --no-trunc | grep "kube-controller-manager --" | awk '{print $1}')
希望这可以帮助。