You need to enable JavaScript to run this app. 基于hobby-kube指南搭建Scaleway集群时节点无法拉取Docker镜像求助
优惠活动
大模型
产品
解决方案
定价
更多

基于hobby-kube指南搭建Scaleway集群时节点无法拉取Docker镜像求助

问题定位与解决方案

核心根因可能性优先级排序

  • Docker daemon DNS配置异常
    ping公网域名正常说明系统级DNS配置有效,但Docker默认会单独配置8.8.8.8/8.8.4.4作为DNS解析服务器,Scaleway部分可用区会限制公共DNS的出站请求,导致Docker进程无法解析镜像仓库域名,出现拉取超时。
  • 节点路由规则冲突
    WireGuard配置后可能修改了默认出站路由,或者Docker网桥的出站流量被强制转发到VPN隧道,而集群主节点未配置VPN子网的NAT转发规则,导致Docker的公网请求走隧道后无法正常响应。
  • 误配置Docker代理
    工作节点的Docker服务可能误配置了不存在的HTTP/HTTPS代理,导致公网请求被拦截。

分步排查&修复方案

第一步:修复Docker DNS配置

  1. 对比主节点和工作节点的Docker daemon配置,执行命令查看:
cat /etc/docker/daemon.json
  1. 如果工作节点配置中无dns字段,在配置文件中添加和系统一致的DNS服务器(可通过主节点cat /etc/resolv.conf获取Scaleway官方DNS地址),示例:
{
  "dns": ["10.5.0.1", "1.1.1.1"]
}
  1. 重启Docker服务生效:
systemctl daemon-reload
systemctl restart docker
  1. 验证镜像拉取是否恢复:docker pull hello-world

第二步:排查路由规则冲突

如果上述操作无效,检查工作节点的路由表:

  1. 执行ip route show查看默认路由,确认公网请求的下一跳是公网网关而非WireGuard接口
  2. 检查iptables NAT规则,确认Docker子网的出站流量走公网接口:
iptables -t nat -L POSTROUTING -n
  1. 如果确认Docker流量走了WireGuard隧道,在主节点上开启WireGuard子网的IP转发和NAT:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE

第三步:检查Docker代理配置

  1. 查看Docker服务的代理配置文件:
cat /etc/systemd/system/docker.service.d/http-proxy.conf
  1. 如果存在代理配置且已失效,删除该文件后重启Docker服务即可。

完成上述操作后重新拉取Weave镜像,对应的Pod会自动恢复运行状态。

内容的提问来源于stack exchange,提问作者Łukasz Kot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 21:45:04