Skip to main content

For Windows Container, you need to set --image-pull-progress-deadline for kubelet

· 2 min read

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/

DOS中通过chcp修改console code page

· 2 min read

UTF-8 格式的日志文件, DOS 中通过 type 命令查看时显示乱码:

C:\app\Manager\Log\RootManagerServer>type Root_20200527_135730_Trace.html
1590559051 0 0 Trace 0 0 Bind Port:Listen:8800<br>
1590559051 0 0 Trace 0 0 鏈嶅姟鍣ㄧ洃鍚鍙?8800<br>
1590559051 0 0 Trace 0 0 Bind Port:Listen:9800<br>
1590559051 0 0 Trace 0 0 瀹㈡埛绔洃鍚鍙?9800<br>

通过 chcp 命令修改 code page 为 65001 后显示正常:

C:\app\Manager\Log\RootManagerServer>type Root_20200527_135730_Trace.html
1590559051 0 0 Trace 0 0 Bind Port:Listen:8800<br>
1590559051 0 0 Trace 0 0 服务器监听端口:8800<br>
1590559051 0 0 Trace 0 0 Bind Port:Listen:9800<br>
1590559051 0 0 Trace 0 0 客户端监听端口:9800<br>

DOS 命令行中支持的 Code Page:

代码页国家/地区或语言
437United States
850多语言 (拉丁文我)
852西里尔语 (俄语)
855西里尔语 (俄语)
857土耳其语
860葡萄牙语
861冰岛语
863加拿大法语
865北欧
866俄语
869现代希腊语
65001UTF-8

chcp 文档: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/chcp

ClustrMaps