Skip to content

Commit

Permalink
Merge pull request kubernetes#39542 from apprenda/kubeadm_99-add_brid…
Browse files Browse the repository at this point in the history
…ge-nf_check

Automatic merge from submit-queue (batch tested with PRs 39486, 37288, 39477, 39455, 39542)

kubeadm: updated preflight to check for bridge-nf

Added a preflight check to determine if /proc/sys/net/bridge/bridge-nf-call-iptables is set to 1 (see  http://kubernetes.io/docs/admin/network-plugins/#network-plugin-requirements). 

Fixes kubernetes/kubeadm#99

/cc @pires @luxas 

**Release note**:

`NONE`
  • Loading branch information
Kubernetes Submit Queue authored Jan 10, 2017
2 parents 65d6a5c + fb4ee4d commit 495ab24
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions cmd/kubeadm/app/preflight/checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ import (
"k8s.io/kubernetes/test/e2e_node/system"
)

const bridgenf string = "/proc/sys/net/bridge/bridge-nf-call-iptables"

type PreFlightError struct {
Msg string
}
Expand Down Expand Up @@ -182,6 +184,34 @@ func (fac FileAvailableCheck) Check() (warnings, errors []error) {
return nil, errors
}

// FileContentCheck checks that the given file contains the string Content.
type FileContentCheck struct {
Path string
Content []byte
}

func (fcc FileContentCheck) Check() (warnings, errors []error) {
f, err := os.Open(fcc.Path)
if err != nil {
return nil, []error{fmt.Errorf("%s does not exist", fcc.Path)}
}

lr := io.LimitReader(f, int64(len(fcc.Content)))
defer f.Close()

buf := &bytes.Buffer{}
_, err = io.Copy(buf, lr)
if err != nil {
return nil, []error{fmt.Errorf("%s could not be read", fcc.Path)}
}

if !bytes.Equal(buf.Bytes(), fcc.Content) {
return nil, []error{fmt.Errorf("%s contents are not set to %s", fcc.Path, fcc.Content)}
}
return nil, []error{}

}

// InPathCheck checks if the given executable is present in the path.
type InPathCheck struct {
executable string
Expand Down Expand Up @@ -292,6 +322,7 @@ func RunInitMasterChecks(cfg *kubeadmapi.MasterConfiguration) error {
DirAvailableCheck{Path: "/var/lib/kubelet"},
FileAvailableCheck{Path: path.Join(kubeadmapi.GlobalEnvParams.KubernetesDir, "admin.conf")},
FileAvailableCheck{Path: path.Join(kubeadmapi.GlobalEnvParams.KubernetesDir, "kubelet.conf")},
FileContentCheck{Path: bridgenf, Content: []byte{'1'}},
InPathCheck{executable: "ip", mandatory: true},
InPathCheck{executable: "iptables", mandatory: true},
InPathCheck{executable: "mount", mandatory: true},
Expand Down Expand Up @@ -325,6 +356,7 @@ func RunJoinNodeChecks(cfg *kubeadmapi.NodeConfiguration) error {
DirAvailableCheck{Path: path.Join(kubeadmapi.GlobalEnvParams.KubernetesDir, "manifests")},
DirAvailableCheck{Path: "/var/lib/kubelet"},
FileAvailableCheck{Path: path.Join(kubeadmapi.GlobalEnvParams.KubernetesDir, "kubelet.conf")},
FileContentCheck{Path: bridgenf, Content: []byte{'1'}},
InPathCheck{executable: "ip", mandatory: true},
InPathCheck{executable: "iptables", mandatory: true},
InPathCheck{executable: "mount", mandatory: true},
Expand Down

0 comments on commit 495ab24

Please sign in to comment.