diff --git a/cluster/saltbase/salt/kube-master-addons/init.sls b/cluster/saltbase/salt/kube-master-addons/init.sls index 94286345dee..075a7a05113 100644 --- a/cluster/saltbase/salt/kube-master-addons/init.sls +++ b/cluster/saltbase/salt/kube-master-addons/init.sls @@ -39,10 +39,17 @@ master-docker-image-tags: # Current containervm image by default has both docker and kubelet # running. But during cluster creation stage, docker and kubelet -# could be overwritten completely, or restarted due flag changes. +# could be overwritten completely, or restarted due to flag changes. # The ordering of salt states for service docker, kubelet and # master-addon below is very important to avoid the race between # salt restart docker or kubelet and kubelet start master components. +# Without the ordering of salt states, when gce instance boot up, +# configure-vm.sh will run and download the release. At the end of +# boot, run-salt will run kube-master-addons service which installs +# master component manifest files to kubelet config directory before +# the installation of proper version kubelet. Please see +# https://github.com/GoogleCloudPlatform/kubernetes/issues/10122#issuecomment-114566063 +# for detail explanation on this very issue. kube-master-addons: service.running: - enable: True diff --git a/pkg/kubelet/container_bridge.go b/pkg/kubelet/container_bridge.go index 5fb6319ec5a..4ef58f4aaee 100644 --- a/pkg/kubelet/container_bridge.go +++ b/pkg/kubelet/container_bridge.go @@ -85,6 +85,9 @@ func ensureCbr0(wantCIDR *net.IPNet) error { return nil } +// Check if cbr0 network interface is configured or not, and take action +// when the configuration is missing on the node, and propagate the rest +// error to kubelet to handle. func cbr0Exists() (bool, error) { if _, err := os.Stat("/sys/class/net/cbr0"); err != nil { if os.IsNotExist(err) {