func createCBR0(wantCIDR *net.IPNet) error { // recreate cbr0 with wantCIDR if err := exec.Command("brctl", "addbr", "cbr0").Run(); err != nil { glog.Error(err) return err } if err := exec.Command("ip", "addr", "add", wantCIDR.String(), "dev", "cbr0").Run(); err != nil { glog.Error(err) return err } if err := exec.Command("ip", "link", "set", "dev", "cbr0", "mtu", "1460", "up").Run(); err != nil { glog.Error(err) return err } // restart docker // For now just log the error. The containerRuntime check will catch docker failures. // TODO (dawnchen) figure out what we should do for rkt here. if util.UsingSystemdInitSystem() { if err := exec.Command("systemctl", "restart", "docker").Run(); err != nil { glog.Error(err) } } else { if err := exec.Command("service", "docker", "restart").Run(); err != nil { glog.Error(err) } } glog.V(2).Info("Recreated cbr0 and restarted docker") return nil }
func createCBR0(wantCIDR *net.IPNet, babysitDaemons bool) error { // recreate cbr0 with wantCIDR if err := exec.Command("brctl", "addbr", "cbr0").Run(); err != nil { glog.Error(err) return err } if err := exec.Command("ip", "addr", "add", wantCIDR.String(), "dev", "cbr0").Run(); err != nil { glog.Error(err) return err } if err := exec.Command("ip", "link", "set", "dev", "cbr0", "mtu", "1460", "up").Run(); err != nil { glog.Error(err) return err } // Stop docker so that babysitter process can restart it again with proper configurations and // checkpoint file (https://github.com/docker/docker/issues/18283). It is safe to kill docker // process here since CIDR can be changed only once for a given node object, and node is marked // as NotReady until the docker daemon is restarted with the newly configured custom bridge. // TODO (dawnchen): Remove this once corrupted checkpoint issue is fixed. // // For now just log the error. The containerRuntime check will catch docker failures. // TODO (dawnchen) figure out what we should do for rkt here. if babysitDaemons { if err := exec.Command("pkill", "-KILL", "docker").Run(); err != nil { glog.Error(err) } } else if util.UsingSystemdInitSystem() { if err := exec.Command("systemctl", "restart", "docker").Run(); err != nil { glog.Error(err) } } else { if err := exec.Command("service", "docker", "restart").Run(); err != nil { glog.Error(err) } } glog.V(2).Info("Recreated cbr0 and restarted docker") return nil }