我们可以看到kubectl cp的传输进度吗?

aks*_*thi 6 kubernetes google-kubernetes-engine

是否有可能知道文件传输的同进kubectl cp谷歌云计算

Fre*_*dia 8

一种选择是使用 pv 来显示经过的时间、传输的数据和吞吐量(例如 MB/s):

$ kubectl exec podname -c containername -- tar cf - /whatever/path | pv | tar xf -

14.1MB 0:00:10 [1.55MB/s] [       <=>                                   ]
Run Code Online (Sandbox Code Playgroud)

如果您提前知道预期的传输大小,您也可以将其传递给 pv,然后它会计算进度百分比和预计到达时间,例如 100m 传输:

$ kubectl exec podname -c containername -- tar cf - /whatever/path | pv -s 100m | tar xf -

13.4MB 0:00:09 [1.91MB/s] [==>                          ] 13% ETA 0:00:58
Run Code Online (Sandbox Code Playgroud)

您显然需要(本地)安装 pv 才能使上述任何一项工作。

  • @ChrisBeck我不相信有一种方法可以在没有 kubectl 的情况下在任一方向上进行复制。从本地复制到远程非常简单:`$ tar cf - /whatever/path | 光伏-s 100m | kubectl exec -i podname -c containername tar xf -` 请注意添加传递给 `kubectl exec` 的 `-i` 参数 (2认同)

Dav*_*aze 6

不,这似乎不可能。

kubectl cp 似乎是通过做相当于

kubectl exec podname -c containername \
  tar cf - /whatever/path \
| tar xf -
Run Code Online (Sandbox Code Playgroud)

这意味着两件事:

  1. tar(1)不会打印任何有用的进度信息。(原则上,您可以添加一个v标志,以打印出每个文件的名称,并将其发送到stderr,但这不会告诉您总共有多少个文件或它们有多大。)因此kubectl cp,实现没有任何文件名解决这个问题的方法。

  2. 没有更丰富的本地Kubernetes API复制文件。

如果将文件移入和移出容器是您的主要用例,则通过添加简单的HTTP服务来构建,测试和运行它可能会更容易。然后,您可以依靠HTTP Content-Length:标头之类的东西进行进度计量。


小智 5

在 MacOS 上,仍然有一种在“网络”选项卡上打开“活动监视器”的老套方法。kubectl cp如果您从本地计算机复制到远程 Pod,则总传输量将显示在“已发送字节数”列中。虽然不是超高精度,但它无需安装任何新东西即可完成工作。

在此输入图像描述