// ListVolumesForPod returns a map of the mounted volumes for the given pod. // The key in the map is the OuterVolumeSpecName (i.e. pod.Spec.Volumes[x].Name) func (kl *Kubelet) ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) { … } // ListBlockVolumesForPod returns a map of the mounted volumes for the given // pod. The key in the map is the OuterVolumeSpecName (i.e. // pod.Spec.Volumes[x].Name) func (kl *Kubelet) ListBlockVolumesForPod(podUID types.UID) (map[string]volume.BlockVolume, bool) { … } // podVolumesExist checks with the volume manager and returns true any of the // pods for the specified volume are mounted or are uncertain. func (kl *Kubelet) podVolumesExist(podUID types.UID) bool { … } // newVolumeMounterFromPlugins attempts to find a plugin by volume spec, pod // and volume options and then creates a Mounter. // Returns a valid mounter or an error. func (kl *Kubelet) newVolumeMounterFromPlugins(spec *volume.Spec, pod *v1.Pod) (volume.Mounter, error) { … } // removeOrphanedPodVolumeDirs attempts to remove the pod volumes directory and // its subdirectories. There should be no files left under normal conditions // when this is called, so it effectively does a recursive rmdir instead of // RemoveAll to ensure it only removes empty directories and files that were // used as mount points, but not content of the mount points. func (kl *Kubelet) removeOrphanedPodVolumeDirs(uid types.UID) []error { … } // cleanupOrphanedPodDirs removes the volumes of pods that should not be // running and that have no containers running. Note that we roll up logs here since it runs in the main loop. func (kl *Kubelet) cleanupOrphanedPodDirs(pods []*v1.Pod, runningPods []*kubecontainer.Pod) error { … }