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

Kubelet拉取Jenkins镜像超时致Pod创建失败,求解决方案

问题排查与解决建议

核心矛盾分析

kubelet调用Docker拉取jenkins/jenkins:lts时出现网络超时,但主机直接执行docker pull jenkins/jenkins:lts正常,说明主机层面的Docker配置与kubelet使用的Docker配置存在差异,或kubelet的网络环境受限。

排查步骤

  • 检查kubelet的Docker配置路径:执行ps aux | grep kubelet查看kubelet启动参数,确认是否指定--docker-config类参数,验证其指向的配置文件是否包含镜像仓库的代理、认证信息。
  • 验证kubelet用户的网络连通性:在节点上切换到kubelet用户(执行su -s /bin/bash kubelet),然后执行curl -v https://registry-1.docker.io/v2/,检查是否能正常建立连接。
  • 检查Docker Socket权限:执行ls -l /var/run/docker.sock,确认kubelet用户所在组(通常为docker组)拥有该socket的读写权限。
  • 查看kubelet详细日志:执行journalctl -u kubelet -f,获取镜像拉取过程的完整日志,定位隐藏的认证或网络异常。

解决建议

  • 统一Docker配置:将主机上正常的Docker配置文件(通常为~/.docker/config.json)复制到kubelet用户的配置目录(如/var/lib/kubelet/.docker/config.json),并执行chown kubelet:kubelet /var/lib/kubelet/.docker/config.json确保权限正确。
  • 调整kubelet启动参数:在kubelet的systemd配置文件(通常位于/etc/systemd/system/kubelet.service.d/10-kubeadm.conf)中添加--docker-config=/var/lib/kubelet/.docker/config.json参数,然后执行systemctl daemon-reload && systemctl restart kubelet重启服务。
  • 同步网络代理配置:若主机依赖代理访问外部仓库,将代理环境变量添加到kubelet的环境配置文件(如/etc/systemd/system/kubelet.service.d/20-env.conf),示例内容:
    Environment="HTTP_PROXY=http://your-proxy-addr:port"
    Environment="HTTPS_PROXY=http://your-proxy-addr:port"
    Environment="NO_PROXY=localhost,127.0.0.1,cluster.local"
    
    配置完成后重启kubelet服务。
  • 修复Docker Socket权限:执行usermod -aG docker kubelet将kubelet用户加入docker组,重启kubelet服务。

内容的提问来源于stack exchange,提问作者Keyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:20:12