Merge pull request #44 from dlorenc/container

Add a flag to control whether or not localkube runs in a container.
pull/57/head
dlorenc 2016-05-05 21:00:55 -07:00
commit 512703be7b
3 changed files with 23 additions and 17 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"flag"
"fmt"
"os"
"os/signal"
@ -14,6 +15,8 @@ var (
DNSDomain = "cluster.local"
ClusterDNSIP = "10.1.30.3"
DNSServerAddr = "172.17.0.1:1970"
containerized = flag.Bool("containerized", true, "Whether localkube is inside a container or not")
)
func init() {
@ -49,7 +52,7 @@ func load() {
LK.Add(scheduler)
// setup kubelet (configured for weave proxy)
kubelet := localkube.NewKubeletServer(DNSDomain, ClusterDNSIP)
kubelet := localkube.NewKubeletServer(DNSDomain, ClusterDNSIP, *containerized)
LK.Add(kubelet)
// proxy
@ -64,11 +67,10 @@ func load() {
}
func main() {
// check for network
flag.Parse()
// if first
load()
err := LK.Run(os.Args, os.Stderr)
err := LK.Run(flag.Args(), os.Stderr)
if err != nil {
fmt.Printf("localkube errored: %v\n", err)
os.Exit(1)

View File

@ -33,17 +33,17 @@ var (
KubeletStop chan struct{}
)
func NewKubeletServer(clusterDomain, clusterDNS string) Server {
func NewKubeletServer(clusterDomain, clusterDNS string, containerized bool) Server {
return &SimpleServer{
ComponentName: KubeletName,
StartupFn: StartKubeletServer(clusterDomain, clusterDNS),
StartupFn: StartKubeletServer(clusterDomain, clusterDNS, containerized),
ShutdownFn: func() {
close(KubeletStop)
},
}
}
func StartKubeletServer(clusterDomain, clusterDNS string) func() {
func StartKubeletServer(clusterDomain, clusterDNS string, containerized bool) func() {
KubeletStop = make(chan struct{})
config := options.NewKubeletServer()
@ -51,7 +51,7 @@ func StartKubeletServer(clusterDomain, clusterDNS string) func() {
config.APIServerList = []string{APIServerURL}
// Docker
config.Containerized = true
config.Containerized = containerized
config.DockerEndpoint = WeaveProxySock
// Networking
@ -59,7 +59,11 @@ func StartKubeletServer(clusterDomain, clusterDNS string) func() {
config.ClusterDNS = clusterDNS
// use hosts resolver config
config.ResolverConfig = "/rootfs/etc/resolv.conf"
if containerized {
config.ResolverConfig = "/rootfs/etc/resolv.conf"
} else {
config.ResolverConfig = "/etc/resolv.conf"
}
schedFn := func() error {
return kubelet.Run(config, nil)

View File

@ -32,19 +32,19 @@ func (lk *LocalKube) Add(server Server) {
}
func (lk *LocalKube) Run(args []string, out io.Writer) error {
if len(args) < 2 {
if len(args) < 1 {
return errors.New("you must choose start <name>, stop <name>, or status")
}
switch args[1] {
switch args[0] {
case "start":
// check if just start
if len(args) == 2 {
if len(args) == 1 {
fmt.Fprintln(out, "Starting LocalKube...")
lk.StartAll()
return nil
} else if len(args) == 3 {
serverName := args[2]
} else if len(args) == 2 {
serverName := args[1]
fmt.Fprintf(out, "Starting `%s`...\n", serverName)
return lk.Start(serverName)
@ -53,12 +53,12 @@ func (lk *LocalKube) Run(args []string, out io.Writer) error {
}
case "stop":
// check if just stop
if len(args) == 2 {
if len(args) == 1 {
fmt.Fprintln(out, "Stopping LocalKube...")
lk.StopAll()
return nil
} else if len(args) == 3 {
serverName := args[2]
} else if len(args) == 2 {
serverName := args[1]
fmt.Fprintf(out, "Stopping `%s`...\n", serverName)
return lk.Stop(serverName)
}