Commit Graph

56041 Commits

Author SHA1 Message Date
Kubernetes Submit Queue
6ad426e8b1 Merge pull request #53352 from medinatiger/etcd
Automatic merge from submit-queue (batch tested with PRs 53776, 53786, 53352, 51567). 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>.

Kubeadm: Add some validation for external etcd config

**What this PR does / why we need it**:
This PR add file existing check for etcd cert files.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #
fixes https://github.com/kubernetes/kubeadm/issues/342
**Special notes for your reviewer**:
Unlike issue https://github.com/kubernetes/kubeadm/issues/342 said, we already have etcd version check which include extensive validation including file format etc. This PR simply added some file existing check upfront for being more user friendly.

**Release note**:

```release-note
NONE
```
2017-10-12 19:27:37 -07:00
Kubernetes Submit Queue
a9264728d7 Merge pull request #53786 from xiangpengzhao/remove-func
Automatic merge from submit-queue (batch tested with PRs 53776, 53786, 53352, 51567). 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>.

Clean up unused func checkKnownProxyMode

**What this PR does / why we need it**:
Minor cleanup.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
2017-10-12 19:27:34 -07:00
Kubernetes Submit Queue
2743d0ba22 Merge pull request #53776 from houjun41544/20171012
Automatic merge from submit-queue (batch tested with PRs 53776, 53786, 53352, 51567). 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>.

Delete redundant defination

**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
```
2017-10-12 19:27:31 -07:00
Kubernetes Submit Queue
fe3b68ecc6 Merge pull request #53762 from smarterclayton/reflect_diff
Automatic merge from submit-queue (batch tested with PRs 53749, 53642, 53813, 53771, 53762). 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>.

Don't exit early in diff.ObjectReflectDiff on slices
2017-10-12 18:22:43 -07:00
Kubernetes Submit Queue
53241b931c Merge pull request #53771 from dixudx/update_cluster_printer
Automatic merge from submit-queue (batch tested with PRs 53749, 53642, 53813, 53771, 53762). 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>.

update cluster printer to enable --show-labels

**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #53729

**Special notes for your reviewer**:

**Release note**:

```release-note
update cluster printer to enable --show-labels
```
2017-10-12 18:22:40 -07:00
Kubernetes Submit Queue
be9e6acae4 Merge pull request #53813 from lego/patch-1
Automatic merge from submit-queue (batch tested with PRs 53749, 53642, 53813, 53771, 53762). 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>.

Update CockroachDB tag to v1.1.0

cc: @a-robinson
2017-10-12 18:22:37 -07:00
Kubernetes Submit Queue
9af47db908 Merge pull request #53642 from edevil/add_kmod
Automatic merge from submit-queue. 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>.

Ensure base image includes the modprobe binary

**What this PR does / why we need it**:

Includes the kmod package so that "modprobe" is available for kubelet and kube-proxy.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #53396
2017-10-12 18:08:00 -07:00
Kubernetes Submit Queue
23599da487 Merge pull request #53749 from dims/relax-cluster-cidr-validation
Automatic merge from submit-queue. 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>.

Parse cluster-cidr only if it is specified

xref https://github.com/kubernetes/kubernetes/issues/53570#issuecomment-335943956



**What this PR does / why we need it**:

In iptables/proxier.go, there is code to check the length of the
CIDR and setup nat/iptables only if the length of the string is
greater than zero. However in PR #49087, strong validation was
added so kube proxy currently bails out and basically mandates
a valid cidr has to be specified. Let us go back to the earlier
behavior.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
2017-10-12 16:40:28 -07:00
Kubernetes Submit Queue
4548a07c0e Merge pull request #53781 from sttts/sttts-kill-pkg-api-util
Automatic merge from submit-queue (batch tested with PRs 47039, 53681, 53303, 53181, 53781). 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>.

Get rid of pkg/api/util

Old helpers we can replace with apimachinery tools.
2017-10-12 15:45:31 -07:00
Kubernetes Submit Queue
49e03d76ba Merge pull request #53181 from andrewsykim/kubeadm/v1.9
Automatic merge from submit-queue (batch tested with PRs 47039, 53681, 53303, 53181, 53781). 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>.

kubeadm: prepare for v1.9 cycle

**What this PR does / why we need it**:
Prepares kubeadm for v1.9 cycle which only supports v1.8 and v1.9 (when released). Deletes all v1.7.x support and sets minimum Kubernetes version to v1.8. 

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes 
https://github.com/kubernetes/kubeadm/issues/447
https://github.com/kubernetes/kubeadm/issues/448
https://github.com/kubernetes/kubeadm/issues/445

**Special notes for your reviewer**:
@luxas these changes seem a bit aggressive but seems reasonable given the compatibility expectations for kubeadm.
2017-10-12 15:45:29 -07:00
Kubernetes Submit Queue
dc404d49d4 Merge pull request #53303 from liggitt/discovery-logging
Automatic merge from submit-queue (batch tested with PRs 47039, 53681, 53303, 53181, 53781). 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>.

Avoid fetching entire discovery tree when possible

For specific commands, we use discovery to determine whether a particular resource is available.

We should avoid fetching the entire discovery tree to check a single resource group version. As the number of groups grows, the performance hit and potential to encounter an error also grows.

```release-note
NONE
```
2017-10-12 15:45:26 -07:00
Kubernetes Submit Queue
f4d95b3f6d Merge pull request #53681 from krzyzacy/kubemark-bazel
Automatic merge from submit-queue (batch tested with PRs 47039, 53681, 53303, 53181, 53781). 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>.

Use bazel to build/push kubemark image

try to get some proof of concept, kubemark image is probably simple enough to get converted to bazel. (me bazel noob still trying it out locally)

cc @BenTheElder @ixdy @shyamjvs 

/release-note-none
2017-10-12 15:45:24 -07:00
Kubernetes Submit Queue
ab56f37100 Merge pull request #47039 from zjj2wry/crb_test
Automatic merge from submit-queue (batch tested with PRs 47039, 53681, 53303, 53181, 53781). 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>.

RBAC: Add test for create clusterrolebindding

**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
2017-10-12 15:45:22 -07:00
Kubernetes Submit Queue
45fd545366 Merge pull request #53756 from ericchiang/webhook-timeout
Automatic merge from submit-queue. 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>.

generic webhook: set a default timeout for webhook requests

Add a 30 second timeout for all HTTP requests that the webhook sends
so they timeout instead of hanging forever.

closes https://github.com/kubernetes/kubernetes/issues/53698

cc @kubernetes/sig-api-machinery-pr-reviews 

```release-note
NONE
```
2017-10-12 13:52:08 -07:00
André Cruz
31ca8916d9 Updated hash and version of image
debian-hyperkube-base-amd64
2017-10-12 21:45:33 +01:00
André Cruz
8fc297c1f9 Ensure base image includes the modprobe binary 2017-10-12 21:45:32 +01:00
Tim Hockin
fc1bd98c09 Merge pull request #53815 from thockin/logo-border-no-stroke
Don't use strokes in the logo SVG
2017-10-12 11:23:13 -07:00
andrewsykim
c92471e524 kubeadm: prepare for v1.9 cycle 2017-10-12 13:08:42 -04:00
Tim Hockin
e3310b7b6f Don't use strokes in the logo SVG
Mixing strokes and paths makes for weird scaling.  Convert the
logo-with-border to use a path.
2017-10-12 09:38:56 -07:00
Joey Pereira
850788c583 Update CockroachDB tag to v1.1.0 2017-10-12 12:31:21 -04:00
Kubernetes Submit Queue
6901fc37d1 Merge pull request #52981 from CaoShuFeng/audit_v1beta2
Automatic merge from submit-queue (batch tested with PRs 53119, 53753, 53795, 52981). 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>.

add RequestReceivedTimestamp and StageTimestamp to audit event

fixes https://github.com/kubernetes/kubernetes/issues/52160

**Release note**:
```
Add RequestReceivedTimestamp and StageTimestamp with micro seconds to audit events.
```
2017-10-12 08:28:44 -07:00
Kubernetes Submit Queue
1289fac587 Merge pull request #53795 from xiangpengzhao/deprecate-eqr
Automatic merge from submit-queue (batch tested with PRs 53119, 53753, 53795, 52981). 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>.

Mark etcd-quorum-read as deprecated.

**What this PR does / why we need it**:

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #
ref: #53662 ##53717

**Special notes for your reviewer**:
/cc @liggitt @dims @anguslees 

**Release note**:

```release-note
Deprecation: The flag `etcd-quorum-read ` of kube-apiserver is deprecated and the ability to switch off quorum read will be removed in a future release.
```
2017-10-12 08:28:42 -07:00
Kubernetes Submit Queue
03adf92aa9 Merge pull request #53753 from derekwaynecarr/log-spam
Automatic merge from submit-queue (batch tested with PRs 53119, 53753, 53795, 52981). 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>.

Reduce log spam in qos container manager

**What this PR does / why we need it**:
excessive log stmts make it hard to debug actual problems.

**Release note**:
```release-note
NONE
```
2017-10-12 08:28:36 -07:00
Kubernetes Submit Queue
0b1da1fb37 Merge pull request #53119 from loburm/audit-e2e
Automatic merge from submit-queue. 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>.

Improve e2e tests of audit logging.

Now test includes:
 * Verbs: create, list, watch, delete, get, update, patch.
 * Resources: pods, deployments, secrets, config maps, custom resource
 definition.
 * More fields: user, resource, level, stage, presence of request and
 response objects.

Fixes #49653
2017-10-12 07:36:44 -07:00
Dr. Stefan Schimanski
a6f0cd01ee Get rid of pkg/api/util 2017-10-12 16:36:32 +02:00
Kubernetes Submit Queue
efe6180806 Merge pull request #53752 from lookuptable/comment
Automatic merge from submit-queue. 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>.

Update comments in pkg/kubeapiserver/authenticator/config.go

**What this PR does / why we need it**:
Make the comments consistent with the function signatures

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```
NONE
```
2017-10-12 06:36:25 -07:00
Kubernetes Submit Queue
9c1796a733 Merge pull request #53793 from wojtek-t/separate_leader_election_in_scheduler
Automatic merge from submit-queue. 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>.

User separate client for leader election in scheduler

Ref https://github.com/kubernetes/kubernetes/issues/53327

@kubernetes/sig-scheduling-bugs @bsalamat @davidopp 

```release-note
Use separate client for leader election in scheduler to avoid starving leader election by regular scheduler operations.
```
2017-10-12 06:36:12 -07:00
xiangpengzhao
2a454dcea0 Mark etcd-quorum-read as deprecated. 2017-10-12 20:00:56 +08:00
Wojciech Tyczynski
234e20b620 User separate client for leader election in scheduler 2017-10-12 13:44:35 +02:00
Kubernetes Submit Queue
1d4e1d2dc2 Merge pull request #52377 from MrHohn/gce-kube-up-create-manual-network
Automatic merge from submit-queue. 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>.

[GCE kube-up] Allow creating/deleting custom network

**What this PR does / why we need it**:
From https://github.com/kubernetes/test-infra/issues/4472.

This is the first step to make PR jobs use custom network instead of auto network (so that we will be less likely hitting subnetwork quota issue). 

The last commit is purely for testing out the changes on PR jobs. It will be removed after review.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #NONE.

**Special notes for your reviewer**:
/assign @bowei @nicksardo 

**Release note**:

```release-note
NONE
```
2017-10-12 02:55:28 -07:00
xiangpengzhao
991a75e1e3 Clean up unused func checkKnownProxyMode 2017-10-12 16:40:52 +08:00
Marian Lobur
791bb89983 Improve e2e tests of audit logging.
Now test includes:
 * Verbs: create, list, watch, delete, get, update, patch.
 * Resources: pods, deployments, secrets, config maps, custom resource
 definition.
 * More fields: user, resource, level, stage, presence of request and
 response objects.
2017-10-12 10:02:16 +02:00
Kubernetes Submit Queue
0f5f82fa44 Merge pull request #53416 from krzyzacy/nodeconfig-path
Automatic merge from submit-queue. 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>.

Add a flag to customize config relative dir

So while migrating nodee2e configs to test-infra, I found out that I'd need to have a better support for [user-data](https://github.com/kubernetes/test-infra/blob/master/jobs/e2e_node/image-config.yaml#L11). However it's not wise to use an [absolute path](https://github.com/kubernetes/test-infra/blob/master/jobs/config.json#L9309), having the config dir to be configurable will be a better solution here, and as well for later on support run local node tests from test-infra.

Currently the job references to the image configs from test-infra, but read metadata from kubernetes, which is wrong :-\


/assign @yguo0905 @Random-Liu
2017-10-12 00:57:29 -07:00
houjun
80c3d2df14 Fix errors in cephfs_test.go 2017-10-12 15:06:01 +08:00
Di Xu
5a9313e10b update cluster printer to enable --show-labels 2017-10-12 14:05:58 +08:00
Kubernetes Submit Queue
4ff6ef4a37 Merge pull request #49361 from xiangpengzhao/svc-test
Automatic merge from submit-queue (batch tested with PRs 53606, 49361). 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>.

Release NodePorts at the end of test cases

**What this PR does / why we need it**:
#49098 reported a flake of HealthCheck NodePort leak and #49099 fixed it. I don't know why I forgot to check other Node Ports in the test cases. Though I haven't encountered such flake yet, it'd be good to release those Node Ports at the end of test cases to avoid flake.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #49548
Thanks @kargakis for reporting #49548!

**Special notes for your reviewer**:
/cc @deads2k @freehan 

**Release note**:

```release-note
NONE
```
2017-10-11 22:41:31 -07:00
Kubernetes Submit Queue
87bd30a142 Merge pull request #53606 from juanvallejo/jvallejo/add-approx-pod-template-factory-method
Automatic merge from submit-queue (batch tested with PRs 53606, 49361). 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>.

add ApproximatePodTemplateForObject factory method

Makes it possible to get at a pod spec template even if an object is scaled to zero, for use with commands that care about pod templates.

**Release note**:

```release-note
NONE
```

Related downstream patch and use-case: https://github.com/openshift/origin/pull/16379

cc @smarterclayton
2017-10-11 22:41:29 -07:00
Sen Lu
e0bcfd29ac Try to use bazel to build/push kubemark image 2017-10-11 22:11:36 -07:00
Kubernetes Submit Queue
f60b92a26a Merge pull request #50836 from FengyunPan/auto-get-NodeSecurityGroupID
Automatic merge from submit-queue. 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>.

Support autoprobing node-security-group for openstack cloud provider

1. Support autoprobing node-security-group
2. Support multiple Security Groups for cluster's nodes
3. Fix recreating Security Group for cluster's nodes

This is a part of #50726

**Special notes for your reviewer**:
/assign @anguslees 
/assign @dims 

**Release note**:
```release-note
Support autoprobing node-security-group for openstack cloud provider, Support multiple Security Groups for cluster's nodes.
```
2017-10-11 21:40:16 -07:00
Jordan Liggitt
59c4d7fdf3
Avoid fetching entire discovery tree when possible 2017-10-12 00:27:42 -04:00
Kubernetes Submit Queue
0515895c08 Merge pull request #53684 from dashpole/feature_gate_allocatable_eviction
Automatic merge from submit-queue. 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>.

Add feature gate for allocatable disk eviction

Issue: #52336 
This PR adds the local storage feature gate to local storage allocatable eviction.

cc @kubernetes/sig-node-bugs 
/assign @jingxu97 @dchen1107 

we should target this for 1.7 if possible.

```release-note
fix a bug where disk pressure could trigger prematurely
```
2017-10-11 20:39:32 -07:00
Cao Shufeng
b69285af7f run hack/update-all.sh 2017-10-12 11:29:41 +08:00
Cao Shufeng
817bc6954c support micro time for advanced audit 2017-10-12 11:29:36 +08:00
Clayton Coleman
178baa9ac3
Don't exit early in diff.ObjectReflectDiff on slices
We were exiting at the first mismatched index, but we want to collect
the diffs for all children. Also, we were assuming diffs existed which
was not always true (and was due to other bugs that we weren't catching
before).
2017-10-11 22:53:25 -04:00
Eric Chiang
2de3ee5c48 generic webhook: set a default timeout for webhook requests
Add a 30 second timeout for all HTTP requests that the webhook sends
so they timeout instead of hanging forever.
2017-10-11 19:07:23 -07:00
Kubernetes Submit Queue
cea1af38e2 Merge pull request #53714 from FengyunPan/fix-SecurityGroupName
Automatic merge from submit-queue. 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>.

The Securty Group name must be unique

Currently the service's name is not unique, and the Securty Group
name is not unique too. openstack cloud provider will delete the
Securty Group of other loadbalancer service when do a deletion.

OpenStack cloud provider get the ID of Securty Group by name, so the Securty Group name must be unique.
https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go#L1262

**Release note**:
```release-note
NONE
```
2017-10-11 18:49:21 -07:00
Kubernetes Submit Queue
eabc7a3553 Merge pull request #53700 from euank/swapReader
Automatic merge from submit-queue. 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>.

kubelet/cm: remove unneeded fork of 'cat'

Reading a file in Go is perfectly possible without invoking cat.

I also removed an outdated comment.

This is meant to be a trivial/minor code cleanup, nothing more.

```release-note
NONE
```
2017-10-11 17:54:08 -07:00
Joe Betz
472140441e Add CHANGELOG-1.8.md for v1.8.1. 2017-10-11 17:21:17 -07:00
Kubernetes Submit Queue
29d898d8a9 Merge pull request #53750 from liggitt/1.7-changelog
Automatic merge from submit-queue. 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>.

Move changelog entries for 1.5.x, 1.7.x, 1.9.x to their own files

```release-note
NONE
```

The release tool now generates changelog entries to per-branch files.

This moves existing entries for 1.5, 1.7, and 1.9

Xref https://github.com/kubernetes/kubernetes/issues/44400
2017-10-11 17:00:34 -07:00
Kubernetes Submit Queue
7e384479d7 Merge pull request #51215 from juanvallejo/jvallejo/preserve-specified-destination-path
Automatic merge from submit-queue (batch tested with PRs 53668, 53624, 52639, 53581, 51215). 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>.

preserve specified destination path

**Release note**:
```release-note
"kubectl cp" updated to honor destination names 
```

**Before**
```
$ kubectl cp foo_dir pod_name:/tmp/bar_dir
$ kubectl exec pod_name -it -- /bin/sh
sh-4.2$
sh-4.2$ ls /tmp
sh-4.2$ foo_dir
```

**After**
```
$ kubectl cp foo_dir pod_name:/tmp/bar_dir
$ kubectl exec pod_name -it -- /bin/sh
sh-4.2$
sh-4.2$ ls /tmp
sh-4.2$ bar_dir
```


**Notable changes to `kubectl cp` After This Patch**
- Copying a directory `bar_dir` to an existing directory in the pod will copy the directory itself, rather than just the file contents:

```bash
*Before*
> remote-pod-shell$ ls /tmp
                    existing_remote_dir              

$ kubectl cp ./my/local/awesome_dir mypod:/tmp/existing_remote_dir
> remote-pod-shell$ ls /tmp
                    existing_remote_dir
                    awesome_dir
```
```bash
*After*
> remote-pod-shell$ ls /tmp
                    existing_remote_dir              

$ kubectl cp ./my/local/awesome_dir mypod:/tmp/existing_remote_dir
> remote-pod-shell$ ls /tmp
                    existing_remote_dir
> remote-pod-shell$ ls /tmp/existing_remote_dir
                    awesome_dir
```

```
*Before*: Directory contents were merged if a local and remote directory shared the same name
*After*:  A new name will be honored for the copied local directory on the remote pod.
          If a new name was not specified for the local directory being copied, and it shares the
          same name as an already-existing directory on the pod, current behavior will follow and
          its contents will be added to those of the already-existing directory.
```

```
*Before*: If a trailing slash (e.g. kubectl cp ./local/dir pod:/tmp) was not added to a directory
          name in the destination path (...:/tmp vs /tmp/...), when copying to a pod, `kubectl`
          would attempt to copy the local directory under the parent of the remote directory
          rather than inside of it.
*After*:  Slashes do not alter the behavior of the command, or destination of the intended 
          source file or directory. With a command such as (kubectl cp ./local_dir pod:/tmp),
          `local_dir` would be copied inside of <pod:/tmp> (an error is returned if pod:/tmp is
           a file).
```

Related downstream bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1469411

@fabianofranz @kubernetes/sig-cli-misc
2017-10-11 17:00:08 -07:00