繁体   English   中英

有没有办法在 Pod 初始化过程中查看 Kubernetes 镜像下载进度?

[英]Is there a way to view the Kubernetes image download progress during pod initialization?

有没有办法在创建 Pod 后获取有关 Kubernetes 发生的事情的日志信息。 kubectl get pods仅提供基本状态消息。 在下载大图像的情况下,这可能需要一些时间,并且kubectl log命令此时不提供任何真实信息。 此命令似乎仅在容器运行时提供信息。

有没有办法获取有关 Kubernetes pod 当前状态的更多日志信息。 直接调用docker pull会提供下载状态信息,但这在 Kubernetes 中并不明显。

不幸的是,Kubernetes 目前没有公开 docker docker pull的进度。 我认为您最好的选择是查看 pod 安排到的机器上的 /var/log/docker.log 。

要添加到先前的答案,如果您使用带有 systemd 的现代工作人员,您可能根本没有/var/log/docker.log文件。

您可以通过以下方式查看下载是否处于活动状态(在 ubuntu/conjure-up 上):

  • 在工作器(或其管理程序)上运行带宽监控工具,如bmon
  • 检查工作人员的下载文件进度: du -s /var/lib/docker/tmp
  • 检查 systemd 日志: journalctl --unit docker
  • 下载完成后,文件将从 tmp 目录中删除

如果您看到如下消息: Handler for GET /v1.26/images/docker.io/XXX/XXX:latest/json returned error: No such image: docker.io/XXX/XXX:latest - 那么我认为这意味着该图像不可用并将被下载,而不是它不存在远程;-)

我认为有一种可能的方法是先下载图像然后部署 Nginx。

  • 对于minikube用户,您可以运行:
minikube image load <image-name>
  • 对于我的情况的Kind用户:
kind load docker-image <image-name> --name k8s-cluster

这样你可以通过集群跟踪图片拉取,这至少可以帮助你了解图片下载进度。

运行kubectl describe pod yourPod给出:

Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  16m    default-scheduler  Successfully assigned yourNamespace/yourPod to someIP
  Normal  Pulling    15m    kubelet            Pulling image "yourImage"
  Normal  Pulled     11m    kubelet            Successfully pulled image "yourImage" in someTime
  Normal  Created    10m    kubelet            Created container thatUsesThePreviousImage
  Normal  Started    10m    kubelet            Started container thatUsesThePreviousImage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM