k3s/pkg
Kubernetes Submit Queue 8f7eb4e6ac
Merge pull request #61713 from mountkin/fix-cli-run-panic
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>.

kubectl: fix a panic when createGeneratedObject failed

**What this PR does / why we need it**:
This PR fixed two bugs in the `kubectl run` command.
The first commit fixed a panic that can be reproduced with the following two commands:
```bash
kubectl run --image=alpine hello -- sleep 1d
kubectl run --image=alpine --stdin --tty --attach hello -- /bin/sh
```
When the panic happens, the stack trace is as the following: 
```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x12f92e6]

goroutine 1 [running]:
k8s.io/kubernetes/pkg/kubectl/cmd.RunRun(0x1890d20, 0xc4207f6210, 0x184e700, 0xc42000c010, 0x184e720, 0xc42000c018, 0x184e720, 0xc42000c020, 0xc42052ef00, 0xc42054f980, ...)
	/home/star/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/kubectl/cmd/run.go:328 +0x10b6
k8s.io/kubernetes/pkg/kubectl/cmd.NewCmdRun.func1(0xc42052ef00, 0xc42054f980, 0x2, 0x8)
	/home/star/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/kubectl/cmd/run.go:105 +0x144
...
```
The reason for the panic is that the original code didn't handle the error returned by `createGeneratedObject` correctly. See https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/run.go#L281
If the function `createGeneratedObject` fails, the returned `runObject` will be `nil`.  At https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/run.go#L328 a nil pointer dereference will happen.

The second problem this PR fixed is a resource leak if both `--rm` and `--expose` flags are provided. The original code used a map (https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/run.go#L280) to trace the created objects. But at https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/run.go#L296 the code will overwrite the previously created object with the same key. So at https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/run.go#L348 only the service will be deleted. The deployment will be left behind.

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

**Special notes for your reviewer**:

**Release note**:

```release-note
NONE
```
/kind bug
/sig cli
2018-03-30 13:19:31 -07:00
..
api remove unused pkg unversioned 2018-03-13 15:06:38 +08:00
apis Set leader-elect for kube-scheduler to true 2018-03-30 10:52:01 -04:00
auth Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
capabilities Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
client Set leader-elect for kube-scheduler to true 2018-03-30 10:52:01 -04:00
cloudprovider some updates 2018-03-30 16:52:42 +08:00
controller Merge pull request #61615 from janetkuo/rm-adopt-hash 2018-03-28 09:39:18 -07:00
credentialprovider Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
features Merge pull request #61075 from tallclair/feature-owners 2018-03-21 06:41:27 -07:00
fieldpath Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
generated generated 2018-02-27 21:21:14 -08:00
kubeapiserver Merge pull request #60100 from mtaufen/node-authz-nodeconfigsource 2018-03-29 17:37:18 -07:00
kubectl Merge pull request #61713 from mountkin/fix-cli-run-panic 2018-03-30 13:19:31 -07:00
kubelet Fix comment in CRI run_as_group. 2018-03-30 07:38:19 +00:00
kubemark add nodeport-addresses flag for kube-proxy 2018-02-26 23:48:46 +08:00
master update metrics to true like it is for kube-apiserver 2018-03-22 10:27:31 -04:00
printers Merge pull request #61304 from juanvallejo/add-template-printer-flags 2018-03-29 15:03:06 -07:00
probe Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
proxy add lb source test 2018-03-27 11:31:37 +08:00
quota Add UT test to TestMax if equal scenario 2018-03-01 10:30:06 +08:00
registry Merge pull request #60519 from bsalamat/auto_prio_class 2018-03-26 23:20:05 -07:00
routes Remove /ui/ redirect 2018-02-12 10:54:33 -05:00
scheduler Merge pull request #61644 from resouer/fix-deadlock 2018-03-27 06:41:10 -07:00
security Merge pull request #61624 from jianglingxia/selinux2018032412 2018-03-27 06:41:13 -07:00
securitycontext API Changes for RunAsGroup and Implementation and e2e 2018-02-28 22:09:56 -08:00
serviceaccount implement token authenticator for new id tokens 2018-02-27 17:20:46 -08:00
ssh Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
util Merge pull request #61091 from Lion-Wei/ipvs-lb 2018-03-30 11:53:17 -07:00
version Require boilerplate on Bazel Skylark source files 2018-02-16 13:44:04 -08:00
volume Merge pull request #61738 from ianchakeres/osx-volume-ut-fix 2018-03-27 09:47:22 -07:00
watch/json
windows/service Add support for binaries to run as Windows services 2018-03-07 00:51:36 +01:00
.import-restrictions
BUILD pkg/api/unversioned related cleanup 2018-03-13 17:20:16 +08:00
OWNERS