kubernetes/cmd
Kubernetes Submit Queue d2495b8329
Merge pull request #63143 from jsafrane/containerized-subpath
Automatic merge from submit-queue (batch tested with PRs 63348, 63839, 63143, 64447, 64567). 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>.

Containerized subpath

**What this PR does / why we need it**:
Containerized kubelet needs a different implementation of `PrepareSafeSubpath` than kubelet running directly on the host.

On the host we safely open the subpath and then bind-mount `/proc/<pidof kubelet>/fd/<descriptor of opened subpath>`.

With kubelet running in a container, `/proc/xxx/fd/yy` on the host contains path that works only inside the container, i.e. `/rootfs/path/to/subpath` and thus any bind-mount on the host fails.

Solution:
- safely open the subpath and gets its device ID and inode number
- blindly bind-mount the subpath to `/var/lib/kubelet/pods/<uid>/volume-subpaths/<name of container>/<id of mount>`. This is potentially unsafe, because user can change the subpath source to a link to a bad place (say `/run/docker.sock`) just before the bind-mount.
- get device ID and inode number of the destination. Typical users can't modify this file, as it lies on /var/lib/kubelet on the host.
- compare these device IDs and inode numbers.

**Which issue(s) this PR fixes**
Fixes #61456

**Special notes for your reviewer**:

The PR contains some refactoring of `doBindSubPath` to extract the common code. New `doNsEnterBindSubPath` is added for the nsenter related parts.

**Release note**:

```release-note
NONE
```
2018-06-01 12:12:19 -07:00
..
clicheck wire config flags through factory 2018-05-04 17:02:20 -04:00
cloud-controller-manager Merge pull request #64016 from stewart-yu/stewart-controller-manager-codeclean 2018-05-30 18:49:17 -07:00
controller-manager auto generated file 2018-05-18 10:23:38 +08:00
gendocs wire config flags through factory 2018-05-04 17:02:20 -04:00
genkubedocs Remove signal handler registration from pkg/kubelet 2018-05-24 20:44:12 +01:00
genman Remove signal handler registration from pkg/kubelet 2018-05-24 20:44:12 +01:00
genswaggertypedocs Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
genutils Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
genyaml wire config flags through factory 2018-05-04 17:02:20 -04:00
hyperkube Remove signal handler registration from pkg/kubelet 2018-05-24 20:44:12 +01:00
importverifier fix message output for import verifier 2018-05-10 12:50:28 -04:00
kube-apiserver apiextensions-apiserver: add establishing controller to avoid race between established and CRs actually served 2018-05-29 13:46:47 +02:00
kube-controller-manager Merge pull request #64016 from stewart-yu/stewart-controller-manager-codeclean 2018-05-30 18:49:17 -07:00
kube-proxy Merge pull request #61077 from islinwb/fix_ipvs_warninfo 2018-05-31 20:01:26 -07:00
kube-scheduler Fixing scheduling latency metrics 2018-05-30 11:20:12 +02:00
kubeadm Merge pull request #63839 from wgliang/master.movepkg 2018-06-01 12:12:15 -07:00
kubectl kubectl use its own logs 2018-05-22 11:35:38 +08:00
kubelet Merge pull request #63143 from jsafrane/containerized-subpath 2018-06-01 12:12:19 -07:00
kubemark Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
linkcheck Autogenerated: hack/update-bazel.sh 2018-02-16 13:43:01 -08:00
BUILD gke-certificates-controller: rm -rf 2018-02-15 12:01:00 -08:00
OWNERS Updated top level owners file to match new format 2017-01-19 11:29:16 -08:00