kubernetes/pkg/kubelet
Kubernetes Submit Queue c1ebba0ae2 Merge pull request #38925 from xiangpengzhao/fix-volume-panic
Automatic merge from submit-queue

Fix nil pointer issue when making mounts for container

When rebooting one of the nodes in my colleague's cluster, two panics were discovered:

```
E1216 04:07:00.193058    2394 runtime.go:52] Recovered from panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:58
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:51
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:41
/usr/local/go/src/runtime/asm_amd64.s:472
/usr/local/go/src/runtime/panic.go:443
/usr/local/go/src/runtime/panic.go:62
/usr/local/go/src/runtime/sigpanic_unix.go:24
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/kubelet.go:1313
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/kubelet.go:1473
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/dockertools/docker_manager.go:1495
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/dockertools/docker_manager.go:2125
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/dockertools/docker_manager.go:2093
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/kubelet.go:1971
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/kubelet.go:530
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pod_workers.go:171
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pod_workers.go:154
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/pod_workers.go:215
/usr/local/go/src/runtime/asm_amd64.s:1998
E1216 04:07:00.275030    2394 runtime.go:52] Recovered from panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:58
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:51
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/runtime/runtime.go:41
/usr/local/go/src/runtime/asm_amd64.s:472
/usr/local/go/src/runtime/panic.go:443
/usr/local/go/src/runtime/panic.go:62
/usr/local/go/src/runtime/sigpanic_unix.go:24
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_caculator.go:98
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_caculator.go:63
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/wait/wait.go:86
/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/pkg/util/wait/wait.go:87
/usr/local/go/src/runtime/asm_amd64.s:1998
```

kubectl version
```
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.8", GitCommit:"693ef591120267007be359f97191a6253e0e4fb5", GitTreeState:"clean", BuildDate:"2016-09-28T03:03:21Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.8", GitCommit:"693ef591120267007be359f97191a6253e0e4fb5", GitTreeState:"clean", BuildDate:"2016-09-28T02:52:25Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
```

The second panic had already been fixed by #33616 and #34251. Not sure what caused the first nil pointer issue and whether it has been fixed yet in the master branch. Just fix it by ignoring the nil pointer when making mounts.

cc @jingxu97 @yujuhong
2017-05-01 10:01:16 -07:00
..
api autogenerated 2017-04-14 10:40:57 -07:00
cadvisor autogenerated 2017-04-14 10:40:57 -07:00
certificate Add bootstrap support to certificate manager. 2017-04-20 16:27:32 -07:00
client autogenerated 2017-04-14 10:40:57 -07:00
cm Registered node before other initialization. 2017-04-18 10:43:56 +08:00
config autogenerated 2017-04-14 10:40:57 -07:00
container move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
custommetrics Merge pull request #44469 from siggy/siggy/custom-metrics-comment 2017-04-17 19:59:16 -07:00
dockershim Implement shared PID namespace in the dockershim 2017-04-27 23:43:53 +00:00
dockertools Make timeouts in the Kubelet slightly offset to aid debugging 2017-04-28 12:00:28 -04:00
envvars move pkg/api/v1/helpers.go to subpackage 2017-04-14 14:25:11 -07:00
events autogenerated 2017-04-14 10:40:57 -07:00
eviction still consider quantity reclaimed even when errors are returned 2017-04-26 17:40:30 -07:00
gpu autogenerated 2017-04-14 10:40:57 -07:00
images autogenerated 2017-04-14 10:40:57 -07:00
kuberuntime move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
leaky Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
lifecycle autogenerated 2017-04-14 10:40:57 -07:00
metrics autogenerated 2017-04-14 10:40:57 -07:00
network Merge pull request #44642 from supereagle/fix-comment-error 2017-04-21 11:52:07 -07:00
pleg autogenerated 2017-04-14 10:40:57 -07:00
pod autogenerated 2017-04-14 10:40:57 -07:00
preemption move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
prober Merge pull request #42085 from cblecker/gofmt-fix 2017-04-17 15:39:07 -07:00
qos autogenerated 2017-04-14 10:40:57 -07:00
remote Fix StopContainer timeout 2017-04-26 15:48:12 -07:00
rkt Make timeouts in the Kubelet slightly offset to aid debugging 2017-04-28 12:00:28 -04:00
rktshim Merge pull request #39158 from feiskyer/cri-proto3 2017-01-20 08:28:49 -08:00
secret autogenerated 2017-04-14 10:40:57 -07:00
server bazel 2017-04-27 09:41:53 -07:00
status move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
sysctl move pkg/api/v1/helpers.go to subpackage 2017-04-14 14:25:11 -07:00
types Improved code coverage for /pkg/kubelet/types 2017-04-25 06:25:21 +08:00
util autogenerated 2017-04-14 10:40:57 -07:00
volumemanager Make timeouts in the Kubelet slightly offset to aid debugging 2017-04-28 12:00:28 -04:00
active_deadline_test.go move client/record 2017-01-31 19:14:13 -05:00
active_deadline.go move client/record 2017-01-31 19:14:13 -05:00
BUILD move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
disk_manager_test.go
disk_manager.go
doc.go
kubelet_cadvisor_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
kubelet_cadvisor.go start the apimachinery repo 2017-01-11 09:09:48 -05:00
kubelet_getters_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
kubelet_getters.go kubelet: Fix ConfigMap on Windows. 2017-01-24 18:40:49 +00:00
kubelet_network_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
kubelet_network.go Fixed forming of pod's Search line in resolv.conf: 2017-01-17 13:18:26 +00:00
kubelet_node_status_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
kubelet_node_status.go move pkg/api/v1/helpers.go to subpackage 2017-04-14 14:25:11 -07:00
kubelet_pods_test.go write HostAliases to hosts file 2017-04-29 11:31:24 -07:00
kubelet_pods_windows_test.go kubelet: Fix ConfigMap on Windows. 2017-01-24 18:40:49 +00:00
kubelet_pods.go Merge pull request #38925 from xiangpengzhao/fix-volume-panic 2017-05-01 10:01:16 -07:00
kubelet_resources_test.go add support for node allocatable phase 2 to kubelet 2017-02-27 21:24:44 -08:00
kubelet_resources.go move pkg/api/v1/ref.go and pkg/api/v1/resource.go to subpackages. move some functions in resource.go to pkg/api/v1/node and pkg/api/v1/pod 2017-04-17 11:38:11 -07:00
kubelet_test.go call GetHostIP from makeEnvironment 2017-03-28 20:20:21 -04:00
kubelet_volumes_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
kubelet_volumes.go Cleanup orphan logging that goes on in the sync loop. 2017-04-25 21:16:22 -04:00
kubelet.go Implement shared PID namespace in the dockershim 2017-04-27 23:43:53 +00:00
networks.go add portmapping getter into network host 2017-02-08 09:35:04 -08:00
oom_watcher_test.go Use the assert/require package in kubelet unit tests 2017-03-16 10:21:44 -07:00
oom_watcher.go switch kubelet to use external (client-go) object references for events 2017-01-31 19:15:33 -05:00
OWNERS Small fix in kubelet owner file. 2017-01-19 11:04:57 -08:00
pod_container_deletor_test.go
pod_container_deletor.go start the apimachinery repo 2017-01-11 09:09:48 -05:00
pod_workers_test.go move client/record 2017-01-31 19:14:13 -05:00
pod_workers.go increase timeout 2017-02-27 10:59:24 -08:00
reason_cache_test.go start the apimachinery repo 2017-01-11 09:09:48 -05:00
reason_cache.go start the apimachinery repo 2017-01-11 09:09:48 -05:00
runonce_test.go Revert "Merge pull request #41202 from dashpole/revert-41095-deletion_pod_lifecycle" 2017-02-15 08:44:03 -08:00
runonce.go cmd/kubelet 2016-11-23 15:53:09 -08:00
runtime.go Check the health of PLEG when updating the node status 2017-01-10 16:34:00 -08:00
util.go cmd/kubelet 2016-11-23 15:53:09 -08:00
volume_host.go SecretVolume using secret manager 2017-01-23 16:10:01 +01:00