kubectl cpで転送の進行状況を確認できますか?



Can We See Transfer Progress With Kubectl Cp



解決:

いいえ、これは不可能のようです。

kubectl cpは、同等の処理を実行することで実装されているようです。



kubectl exec podname -c containername  tar cf- / whatever / path  | tarxf-

これは2つのことを意味します:

  1. タール (1)有用な進捗情報を出力しません。 (原則として、v stderrに渡されるときに各ファイル名を出力するためのフラグ。ただし、ファイルの総数やサイズはわかりません。)実装されたkubectlcpには、これを取り除く方法がありません。



  2. ファイルをコピーするためのより豊富なネイティブKubernetesAPIはありません。

コンテナー内外へのファイルの移動が重要なユースケースである場合は、単純なHTTPサービスを追加することで、ビルド、テスト、および実行がおそらく簡単になります。その後、HTTPなどに頼ることができますContent-Length:進行状況を計測するためのヘッダー。


1つのオプションは、経過時間、転送されたデータ、スループット(MB /秒など)を表示するpvを使用することです。



$ 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を(ローカルに)インストールする必要があります。


それは不可能ですが、kubernetesでrsyncを実装する方法をここで見つけることができます。rsyncは転送ファイルの進行状況を示します。 kubernetesポッドへのrsyncファイル