You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm init执行失败求助:kubelet异常及10250端口占用问题

kubeadm init执行失败求助:kubelet异常及10250端口占用问题

看起来你在初始化Kubernetes集群的过程中碰到了一连串的小麻烦,别着急,咱们一步步拆解排查来解决。

先处理当前最紧急的「10250端口被占用」问题

首先得搞清楚到底是哪个进程占了这个kubelet的默认端口,执行下面的命令就能查到:

  • 如果你装了lsof工具:
    sudo lsof -i :10250
    
  • 如果没装lsof,用系统自带的ss命令也行:
    sudo ss -tulpn | grep 10250
    
    命令输出里会显示占用端口的进程PID和名称,接下来分情况处理:
    • 如果是旧的kubelet进程:说明之前的kubelet没有彻底停止,先停掉服务再杀残留进程:
      sudo systemctl stop kubelet
      sudo kill -9 <查到的进程PID>
      
    • 如果是其他无关进程:根据进程名称判断是否可以停止,优先停掉占用进程再重试kubeadm init(不建议修改kubelet默认端口,避免后续兼容性问题)。

再回头解决之前的「kubelet无法启动/健康检查失败」问题

结合你之前的日志,有两个关键问题要彻底处理:

  1. Swap彻底关闭:你执行的sudo swapoff -a只是临时关闭,重启机器后swap会自动恢复。要彻底关闭,需要编辑/etc/fstab文件,注释掉所有包含swap的行,然后再执行一次sudo swapoff -a。Kubernetes生产环境要求必须关闭swap(除非你专门测试NodeSwap特性门控,新手不建议这么做)。
  2. CRI沙箱镜像版本不一致:日志里提示你的容器运行时用的是registry.k8s.io/pause:3.6,但kubeadm推荐用3.9版本。这个警告看似小事,但可能导致kubelet和容器运行时不兼容,手动拉取正确镜像并修改Docker配置:
    # 拉取指定版本的pause镜像
    sudo docker pull registry.k8s.io/pause:3.9
    # 编辑Docker守护进程配置
    sudo nano /etc/docker/daemon.json
    
    在daemon.json里添加或修改沙箱镜像配置:
    {
      "sandbox-image": "registry.k8s.io/pause:3.9"
    }
    
    保存后重启Docker和kubelet:
    sudo systemctl restart docker
    sudo systemctl restart kubelet
    

通用排查技巧

如果后续还是碰到kubelet启动问题,一定要看kubelet的日志找具体原因:

sudo journalctl -u kubelet -f

这条命令会实时输出kubelet的日志,里面会明确告诉你是配置错误、依赖缺失还是其他问题。

另外,如果你之前多次执行kubeadm init失败,建议先清理残留的K8s资源再重新初始化:

sudo kubeadm reset
sudo rm -rf ~/.kube/config /etc/kubernetes/pki /var/lib/etcd

备注:内容来源于stack exchange,提问作者sina kzm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:28:07