kubernetes 使用kubeadm配置时重新启动kube-apiserver

sqxo8psd  于 11个月前  发布在  Kubernetes
关注(0)|答案(4)|浏览(293)

当使用kubeadmin init配置kubernetes集群时,它会创建一个集群,该集群将kube-apiserveretcdkube-controller-managerkube-scheduler进程保存在docker容器中。
每当kube-apiserver的某些配置(例如访问令牌)发生更改时,我必须重新启动相关服务器。虽然我通常可以在其他安装上运行systemctl restart kube-apiserver.service,但我已经杀死了该安装上的docker容器或重新启动系统以重新启动它。
那么有没有更好的方法来重新启动kube-apiserver呢?

kpbpu008

kpbpu0081#

您可以删除kube-apiserver Pod。它是一个static Pod(如果安装了kubeadm),并将立即重新创建。
如果我没记错的话,该安装的manifest目录是/etc/kubernetes/manifest,但我稍后会检查并编辑这个答案。只需在kube-apiserver.json上做一点触摸,也会重新创建Pod。

xdnvmnnf

xdnvmnnf2#

实际上有一个命令:

docker restart <containername/ID>

字符串
某些配置更改将通过reload服务来应用。类似于nginx. conf中的常见指令。如果您的服务支持reload,您可以尝试以下操作:

docker kill -s HUP <nginx container>


这将重新加载nginx服务。
重新启动容器的主进程将使容器停止。
我已经杀死了安装上的docker容器,或者重新启动系统来重新启动它。
请不要为此重新启动整个服务器。

pdtvr36n

pdtvr36n3#

docker ps -af 'name=k8s_POD_(kube-apiserver| Kube-controller-Manager| Kube-scheduler| etcd)-*' -q|/usr/bin/xargs /bin/docker rm -f

cmssoen2

cmssoen24#

临时重命名主节点上/etc/kubernetes/manifests下的文件会导致pod重新创建。
另一种方法是重新启动pod下运行的容器。使用containerd,您需要首先删除任务(相当于停止容器),然后删除容器:

# find id of your container
ctr -n k8s.io container ls
# get its pid
ctr -n k8s.io container info <container-id> | grep proc | grep path
# find task with pid
ctr -n k8s.io task ls | grep <pid>
# kill it
ctr -n k8s.io task kill <task-id>
# now you can remove the container too
ctr -n k8s.io container rm <container-id>

字符串

相关问题