Windows镜像动则几个G, 基于Windows Server Core的镜像5~10G, Windows节点上的kubelet在下载镜像的时候经常会cancel掉:
Failed to pull image "XXX": rpc error: code = Unknown desc = context canceled
造成这个问题的原因是因为默认的image pulling progress deadline是1分钟, 如果1分钟内镜像下载没有任何进度更新, 下载动作就会取消, 比较大的镜像就无法成功下载. 见官方文档:
If no pulling progress is made before this deadline, the image pulling will be cancelled. This docker-specific flag only works when container-runtime is set to docker. (default 1m0s)
解决方法是为kubelet配置–image-pull-progress-deadline参数, 比如指定为30分钟:
"c:/k/kubelet.exe ... --image-pull-progress-deadline=30m"
对于Windows服务, 使用sc指令修改kubelet的binPath:
sc config kubelet binPath= " --image-pull-progress-deadline=30m
然后重启kubelet及依赖服务:
sc stop kubeproxy && sc stop kubelet && sc start kubelet && sc start kubeproxy && sc query kubelet && sc query kubeproxy
Refer to: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/