Skip to content

Commit

Permalink
f
Browse files Browse the repository at this point in the history
  • Loading branch information
deads2k committed Mar 1, 2018
1 parent c885483 commit 9b38e05
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 42 deletions.
22 changes: 3 additions & 19 deletions pkg/oc/bootstrap/clusterup/kubelet/run_kubelet.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@ type KubeletRunConfig struct {
// ContainerBinds is a list of local/path:image/path pairs
ContainerBinds []string
// NodeImage is the docker image for openshift start node
NodeImage string
Environment []string
DockerRoot string
UseSharedVolume bool
HostVolumesDir string
NodeImage string
Environment []string

HTTPProxy string
HTTPSProxy string
Expand All @@ -43,7 +40,6 @@ func NewKubeletRunConfig() *KubeletRunConfig {
// and returns a directory in the local file system where
// the OpenShift configuration has been copied
func (opt KubeletRunConfig) MakeNodeConfig(imageRunHelper *run.Runner, out io.Writer) (string, error) {
binds := append(opt.ContainerBinds)
env := []string{}
if len(opt.HTTPProxy) > 0 {
env = append(env, fmt.Sprintf("HTTP_PROXY=%s", opt.HTTPProxy))
Expand All @@ -54,19 +50,7 @@ func (opt KubeletRunConfig) MakeNodeConfig(imageRunHelper *run.Runner, out io.Wr
if len(opt.NoProxy) > 0 {
env = append(env, fmt.Sprintf("NO_PROXY=%s", strings.Join(opt.NoProxy, ",")))
}
if opt.UseSharedVolume {
binds = append(binds, fmt.Sprintf("%[1]s:%[1]s:shared", opt.HostVolumesDir))
env = append(env, "OPENSHIFT_CONTAINERIZED=false")
} else {
binds = append(binds, "/:/rootfs:ro")
binds = append(binds, fmt.Sprintf("%[1]s:%[1]s:rslave", opt.HostVolumesDir))
}
env = append(env, opt.Environment...)
binds = append(binds, fmt.Sprintf("%[1]s:%[1]s", opt.DockerRoot))

// Kubelet needs to be able to write to
// /sys/devices/virtual/net/vethXXX/brport/hairpin_mode, so make this rw, not ro.
binds = append(binds, "/sys/devices/virtual/net:/sys/devices/virtual/net:rw")

fmt.Fprintf(out, "Running kubelet\n")
createConfigCmd := []string{
Expand All @@ -80,7 +64,7 @@ func (opt KubeletRunConfig) MakeNodeConfig(imageRunHelper *run.Runner, out io.Wr
DiscardContainer().
HostNetwork().
HostPid().
Bind(binds...).
Bind(opt.ContainerBinds...).
Env(env...).
Entrypoint("hyperkube").
Command(createConfigCmd...).Start()
Expand Down
3 changes: 2 additions & 1 deletion pkg/oc/bootstrap/docker/host/host.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ func (h *HostHelper) CanUseNsenterMounter() (bool, error) {
// EnsureVolumeShare ensures that the host Docker machine has a shared directory that can be used
// for OpenShift volumes
func (h *HostHelper) EnsureVolumeShare() error {
fmt.Printf("#### 1a %q\n", h.volumesDir)
cmd := fmt.Sprintf(ensureVolumeShareCmd, h.volumesDir)
_, rc, err := h.runner().
Image(h.image).
Expand Down Expand Up @@ -148,7 +149,7 @@ func (h *HostHelper) Hostname() (string, error) {
}

func (h *HostHelper) EnsureHostDirectories(createVolumeShare bool) error {
if createVolumeShare {
if createVolumeShare || true {
return h.EnsureVolumeShare()
}
return nil
Expand Down
46 changes: 24 additions & 22 deletions pkg/oc/bootstrap/docker/run_self_hosted.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,9 @@ func (c *ClientStartConfig) StartSelfHosted(out io.Writer) error {
}

// wait for the apiserver to be ready
waitForHealthyKubeAPIServer(clientConfig)
if err := waitForHealthyKubeAPIServer(clientConfig); err != nil {
return err
}

clusterAdminKubeConfig, err := ioutil.ReadFile(path.Join(masterConfigDir, "admin.kubeconfig"))
if err != nil {
Expand Down Expand Up @@ -364,8 +366,17 @@ func (c *ClientStartConfig) startKubelet(out io.Writer, masterConfigDir, nodeCon
return "", err
}

// here's a cool thing. The kubelet flags specify a --root-dir which is the *real* HostVolumesDir
hostVolumeDir := c.HostVolumesDir
for _, flag := range kubeletFlags {
if strings.HasPrefix(flag, "--root-dir=") {
hostVolumeDir = strings.TrimLeft(flag, "--root-dir=")
}
}

imageRunningHelper := run.NewRunHelper(c.DockerHelper())
container := kubelet.NewKubeletRunConfig()
container.Environment = c.Environment
container.ContainerBinds = append(container.ContainerBinds, nodeConfigDir+":/var/lib/origin/openshift.local.config/node:z")
container.ContainerBinds = append(container.ContainerBinds, masterConfigDir+":/var/lib/origin/openshift.local.config/master:z")
container.ContainerBinds = append(container.ContainerBinds, podManifestDir+":/var/lib/origin/pod-manifests:z")
Expand All @@ -376,11 +387,19 @@ func (c *ClientStartConfig) startKubelet(out io.Writer, masterConfigDir, nodeCon
container.ContainerBinds = append(container.ContainerBinds, fmt.Sprintf("%[1]s:%[1]s", c.HostPersistentVolumesDir))
container.Environment = append(container.Environment, fmt.Sprintf("OPENSHIFT_PV_DIR=%s", c.HostPersistentVolumesDir))
}
if !c.UseNsenterMount {
container.ContainerBinds = append(container.ContainerBinds, fmt.Sprintf("%[1]s:%[1]s:shared", hostVolumeDir))
container.Environment = append(container.Environment, "OPENSHIFT_CONTAINERIZED=false")
} else {
container.ContainerBinds = append(container.ContainerBinds, "/:/rootfs:ro")
container.ContainerBinds = append(container.ContainerBinds, fmt.Sprintf("%[1]s:%[1]s:rslave", hostVolumeDir))
}
container.ContainerBinds = append(container.ContainerBinds, fmt.Sprintf("%[1]s:%[1]s", dockerRoot))
// Kubelet needs to be able to write to
// /sys/devices/virtual/net/vethXXX/brport/hairpin_mode, so make this rw, not ro.
container.ContainerBinds = append(container.ContainerBinds, "/sys/devices/virtual/net:/sys/devices/virtual/net:rw")

container.NodeImage = c.openshiftImage()
container.Environment = c.Environment
container.DockerRoot = dockerRoot
container.UseSharedVolume = !c.UseNsenterMount
container.HostVolumesDir = c.HostVolumesDir
container.HTTPProxy = c.HTTPProxy
container.HTTPSProxy = c.HTTPSProxy
container.NoProxy = c.NoProxy
Expand All @@ -399,23 +418,6 @@ func (c *ClientStartConfig) startKubelet(out io.Writer, masterConfigDir, nodeCon
container.Args = append(container.Args, "--cluster-dns=172.30.0.2")
glog.V(1).Info(strings.Join(container.Args, " "))

// update DNS resolution to point at the master (for now). Do this by grabbing the local and prepending to it.
// this is probably broken somewhere for some reason and a bad idea of other reasons, but it gets us moving
if existingResolveConf, err := ioutil.ReadFile("/etc/resolv.conf"); err == nil {
newResolveConf := append([]byte("nameserver 172.30.0.2\n"), existingResolveConf...)
if err := ioutil.WriteFile(path.Join(nodeConfigDir, "resolv.conf"), newResolveConf, 0644); err != nil {
return "", err
}
if err := ioutil.WriteFile(path.Join(nodeConfigDir, "resolv.conf"), existingResolveConf, 0644); err != nil {
return "", err
}
//container.Args = append(kubeletFlags, "--cluster-dns=172.30.0.2")

} else {
// TOD this may not be fatal after it sort of works.
return "", err
}

kubeletContainerID, err := container.MakeNodeConfig(imageRunningHelper.New(), out)
if err != nil {
return "", fmt.Errorf("error creating node config: %v", err)
Expand Down

0 comments on commit 9b38e05

Please sign in to comment.