是否可以通过kubectl cp
了解 Google Cloud 的文件传输进度?
答案 0 :(得分:4)
一种选择是使用pv,它将显示经过的时间,传输的数据和吞吐量(例如MB / s):
$ kubectl exec podname -c containername -- tar cf - /whatever/path | pv | tar xf -
14.1MB 0:00:10 [1.55MB/s] [ <=> ]
如果您提前知道预期的传输大小,也可以将其传递给pv,然后它将计算进度百分比和ETA,例如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
您显然需要在本地安装pv才能使以上任何功能正常工作。
答案 1 :(得分:2)
不,这似乎不可能。
kubectl cp
appears to be implemented通过做
kubectl exec podname -c containername \
tar cf - /whatever/path \
| tar xf -
这意味着两件事:
tar (1)不会打印任何有用的进度信息。 (原则上,您可以添加一个v
标志来打印出每个文件的名称,直到stderr,但这并不能告诉您总共有多少个文件或它们有多大。)所以{{ 1}}的实施方式无法解决这个问题。
没有更丰富的本地Kubernetes API可以复制文件。
如果将文件移入和移出容器是您的主要用例,则通过添加简单的HTTP服务,构建,测试和运行它可能会更容易。然后,您可以依靠HTTP kubectl cp
标头之类的东西进行进度计量。
答案 2 :(得分:2)
我想出了一种方法。如果您对要复制的容器具有bash访问权限,则可以在遥控器上执行类似wc -c <file>
的操作,然后将其与本地大小进行比较。 du -h <file>
是另一种选择,它提供了易于理解的输出,因此可能会更好
答案 3 :(得分:1)
这是不可能的,但是您可以在这里找到如何使用kubernetes实现rsync,rsync向您显示了传输文件的进度。 rsync files to a kubernetes pod