kubeadm-init-kubelet抱怨默认绑定地址已在使用中



kubeadm 1.12.2版

$ sudo kubeadm init --config kubeadm_new.config --ignore-preflight-errors=all

/var/log/syslog显示:

Nov 15 08:44:13 khteh-T580 kubelet[5101]: I1115 08:44:13.438374    5101 server.go:1013] Started kubelet
Nov 15 08:44:13 khteh-T580 kubelet[5101]: I1115 08:44:13.438406    5101 server.go:133] Starting to listen on 0.0.0.0:10250
Nov 15 08:44:13 khteh-T580 kubelet[5101]: E1115 08:44:13.438446    5101 kubelet.go:1287] Image garbage collection failed once. Stats initialization may not have completed yet: failed to get imageFs info: unable to find data in memory cache
Nov 15 08:44:13 khteh-T580 kubelet[5101]: E1115 08:44:13.438492    5101 server.go:753] Starting health server failed: listen tcp 127.0.0.1:10248: bind: address already in use
Nov 15 08:44:13 khteh-T580 kubelet[5101]: I1115 08:44:13.438968    5101 server.go:318] Adding debug handlers to kubelet server.
Nov 15 08:44:13 khteh-T580 kubelet[5101]: F1115 08:44:13.439455    5101 server.go:145] listen tcp 0.0.0.0:10250: bind: address already in use

我尝试过sudo systemctl stop kubelet并手动终止kubelet进程,但没有成功。任何建议和见解都将不胜感激。

您是否尝试过使用netstat来查看正在运行的其他进程已经绑定到该端口?

sudo netstat -tulpn | grep 10250

以下是您可以做的:

尝试以下命令,找出哪个进程持有端口10250

root@master admin]# ss -lntp | grep 10250
LISTEN     0      128         :::10250                   :::*                   users:(("kubelet",pid=23373,fd=20))

它将为您提供该进程的PID和该进程的名称。如果是不需要的进程持有该端口,您可以随时终止该进程,并且该端口可供kubelet使用。

在终止进程后再次运行上述命令,它应该不会返回任何值。

为了安全起见,运行kubeadm reset,然后运行kubeadminit,它应该会通过。

对我来说,后来我发现有两个额外的容器"终止";在我的集群中的core-dns-xxxxxx。

删除它们后,有力地解决了我的问题:

kubectl delete core-dns-xxxx --force

谢谢。

我放弃kubeadm并使用microk8s。

最新更新