Commit 1ecc12f7 authored by Vishnu Kannan's avatar Vishnu Kannan Committed by Vishnu kannan

[Kubelet] Do not use custom mounter script for bind mounts, ext* and tmpfs mounts

parent d28f7031
...@@ -22,6 +22,7 @@ go_library( ...@@ -22,6 +22,7 @@ go_library(
tags = ["automanaged"], tags = ["automanaged"],
deps = [ deps = [
"//pkg/util/exec:go_default_library", "//pkg/util/exec:go_default_library",
"//pkg/util/sets:go_default_library",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
], ],
) )
......
...@@ -30,7 +30,7 @@ import ( ...@@ -30,7 +30,7 @@ import (
const ( const (
// Default mount command if mounter path is not specified // Default mount command if mounter path is not specified
mount = "mount" defaultMountCommand = "mount"
) )
type Interface interface { type Interface interface {
...@@ -105,7 +105,7 @@ func New() Interface { ...@@ -105,7 +105,7 @@ func New() Interface {
func NewCustomMounter(mounterPath, mounterRootfsPath string) Interface { func NewCustomMounter(mounterPath, mounterRootfsPath string) Interface {
// If mounter-path flag is not set, use default mount path // If mounter-path flag is not set, use default mount path
if mounterPath == "" { if mounterPath == "" {
mounterPath = mount mounterPath = defaultMountCommand
} }
if mounterRootfsPath == "" { if mounterRootfsPath == "" {
mounterRootfsPath = "/" mounterRootfsPath = "/"
......
...@@ -25,13 +25,13 @@ import ( ...@@ -25,13 +25,13 @@ import (
"io" "io"
"os" "os"
"os/exec" "os/exec"
"path"
"strconv" "strconv"
"strings" "strings"
"syscall" "syscall"
"github.com/golang/glog" "github.com/golang/glog"
utilExec "k8s.io/kubernetes/pkg/util/exec" utilExec "k8s.io/kubernetes/pkg/util/exec"
"k8s.io/kubernetes/pkg/util/sets"
) )
const ( const (
...@@ -63,18 +63,24 @@ type Mounter struct { ...@@ -63,18 +63,24 @@ type Mounter struct {
// type, where kernel handles fs type for you. The mount 'options' is a list of options, // type, where kernel handles fs type for you. The mount 'options' is a list of options,
// currently come from mount(8), e.g. "ro", "remount", "bind", etc. If no more option is // currently come from mount(8), e.g. "ro", "remount", "bind", etc. If no more option is
// required, call Mount with an empty string list or nil. // required, call Mount with an empty string list or nil.
// Update source path to include a root filesystem override to make a containerized mounter (specified via `mounterPath`) work.
func (mounter *Mounter) Mount(source string, target string, fstype string, options []string) error { func (mounter *Mounter) Mount(source string, target string, fstype string, options []string) error {
// Path to mounter binary. Set to mount accessible via $PATH by default.
// All Linux distros are expected to be shipped with a mount utility that an support bind mounts.
mounterPath := defaultMountCommand
bind, bindRemountOpts := isBind(options) bind, bindRemountOpts := isBind(options)
if bind { if bind {
err := doMount(mounter.mounterPath, path.Join(mounter.mounterRootfsPath, source), path.Join(mounter.mounterRootfsPath, target), fstype, []string{"bind"}) err := doMount(mounterPath, source, target, fstype, []string{"bind"})
if err != nil { if err != nil {
return err return err
} }
return doMount(mounter.mounterPath, path.Join(mounter.mounterRootfsPath, source), path.Join(mounter.mounterRootfsPath, target), fstype, bindRemountOpts) return doMount(mounterPath, source, target, fstype, bindRemountOpts)
} else {
return doMount(mounter.mounterPath, source, path.Join(mounter.mounterRootfsPath, target), fstype, options)
} }
// These filesystem types are expected to be supported by the mount utility on the host across all Linux distros.
var defaultMounterFsTypes = sets.NewString("tmpfs", "ext4", "ext3", "ext2")
if !defaultMounterFsTypes.Has(fstype) {
mounterPath = mounter.mounterPath
}
return doMount(mounterPath, source, target, fstype, options)
} }
// isBind detects whether a bind mount is being requested and makes the remount options to // isBind detects whether a bind mount is being requested and makes the remount options to
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment