K3s集群kubelet拉取镜像超时,修改runtime-request-timeout无效求助
K3s切换Docker运行时后镜像拉取2分钟超时的解决方法
问题背景
K3s集群将容器运行时从containerd切换为Docker后,镜像拉取到2分钟就会超时重试,无法完成大镜像的拉取。曾尝试在/etc/rancher/k3s/config.yaml中添加runtime-request-timeout=10m的kubelet参数,但该参数并不控制镜像拉取场景,配置未生效。
相关事件日志:
│ Type Reason Age From Message │ │ ---- ------ ---- ---- ------- │ │ Normal Scheduled 2m32s default-scheduler Successfully assigned default/image-f8dq4 to ubuntu2 │ │ Warning Failed 33s kubelet Failed to pull image "privaterepo/image:1.0.0.0": rpc error: code = Unknown desc = context deadline exceeded │ │ Warning Failed 33s kubelet Error: ErrImagePull │ │ Normal BackOff 33s kubelet Back-off pulling image "privaterepo/image:1.0.0.0" │ │ Warning Failed 33s kubelet Error: ImagePullBackOff │ │ Normal FileSystemResizeSuccessful 32s (x2 over 2m32s) kubelet MountVolume.NodeExpandVolume succeeded for volume "pvc-b6152bdd-aef4-4927-929c-674226705ddf" ubuntu2 │ │ Normal Pulling 19s (x2 over 2m32s) kubelet Pulling image "privaterepo/image:1.0.0.0"
解决步骤
1. 配置kubelet的镜像拉取超时参数
runtime-request-timeout是kubelet向容器运行时发送请求的超时时间,并非镜像拉取的超时控制项。正确的参数是image-pull-timeout,用于设置kubelet拉取镜像的最大等待时间。
修改/etc/rancher/k3s/config.yaml,添加以下配置:
kubelet-arg: - "image-pull-timeout=10m"
保存配置后,重启所有节点的K3s服务:
# 控制节点执行 systemctl restart k3s # Worker节点执行 systemctl restart k3s-agent
2. (可选)调整Docker Daemon的拉取超时
如果镜像拉取慢是因为Docker本身的下载限制,可修改Docker daemon配置来延长超时并调整并发数:
编辑/etc/docker/daemon.json(不存在则创建),添加:
{ "pull-timeout": 600, "max-concurrent-downloads": 5 }
重启Docker服务:
systemctl restart docker
3. 验证配置生效
查看kubelet的启动参数,确认image-pull-timeout已加载:
ps aux | grep kubelet | grep image-pull-timeout
之后重新触发镜像拉取,观察事件日志是否再出现超时错误。
内容的提问来源于stack exchange,提问作者Astin Gengo
相关产品推荐
相关产品推荐

