Merge pull request #52161 from CaoShuFeng/kubectl_cp

Automatic merge from submit-queue (batch tested with PRs 52109, 52235, 51809, 52161, 50080). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>..

Allow kubectl cp large amounts of files from container

When we try to copy out a dir with large amounts of files from container, we hit such error:

```bash
kubectl cp  mypod:/ ./a/
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
error: open a/usr/share/zoneinfo/Asia/Rangoon: too many open files
```

This is because kubectl opens too many files at the same. We should close them after Write() function.
**Release note**:
```
NONE
```
pull/6/head
Kubernetes Submit Queue 2017-09-23 10:26:52 -07:00 committed by GitHub
commit 90a4ac03dc
1 changed files with 6 additions and 2 deletions

View File

@ -259,8 +259,12 @@ func untarAll(reader io.Reader, destFile, prefix string) error {
if err != nil {
return err
}
defer outFile.Close()
io.Copy(outFile, tarReader)
if _, err := io.Copy(outFile, tarReader); err != nil {
return err
}
if err := outFile.Close(); err != nil {
return err
}
}
return nil
}