Add a flag to control whether or not localkube runs in a container.
parent
9ee08289c3
commit
cfb93eea90
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
@ -14,6 +15,8 @@ var (
|
||||||
DNSDomain = "cluster.local"
|
DNSDomain = "cluster.local"
|
||||||
ClusterDNSIP = "10.1.30.3"
|
ClusterDNSIP = "10.1.30.3"
|
||||||
DNSServerAddr = "172.17.0.1:1970"
|
DNSServerAddr = "172.17.0.1:1970"
|
||||||
|
|
||||||
|
containerized = flag.Bool("containerized", true, "Whether localkube is inside a container or not")
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -49,7 +52,7 @@ func load() {
|
||||||
LK.Add(scheduler)
|
LK.Add(scheduler)
|
||||||
|
|
||||||
// setup kubelet (configured for weave proxy)
|
// setup kubelet (configured for weave proxy)
|
||||||
kubelet := localkube.NewKubeletServer(DNSDomain, ClusterDNSIP)
|
kubelet := localkube.NewKubeletServer(DNSDomain, ClusterDNSIP, *containerized)
|
||||||
LK.Add(kubelet)
|
LK.Add(kubelet)
|
||||||
|
|
||||||
// proxy
|
// proxy
|
||||||
|
@ -64,11 +67,10 @@ func load() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// check for network
|
flag.Parse()
|
||||||
|
|
||||||
// if first
|
// if first
|
||||||
load()
|
load()
|
||||||
err := LK.Run(os.Args, os.Stderr)
|
err := LK.Run(flag.Args(), os.Stderr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("localkube errored: %v\n", err)
|
fmt.Printf("localkube errored: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
@ -33,17 +33,17 @@ var (
|
||||||
KubeletStop chan struct{}
|
KubeletStop chan struct{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewKubeletServer(clusterDomain, clusterDNS string) Server {
|
func NewKubeletServer(clusterDomain, clusterDNS string, containerized bool) Server {
|
||||||
return &SimpleServer{
|
return &SimpleServer{
|
||||||
ComponentName: KubeletName,
|
ComponentName: KubeletName,
|
||||||
StartupFn: StartKubeletServer(clusterDomain, clusterDNS),
|
StartupFn: StartKubeletServer(clusterDomain, clusterDNS, containerized),
|
||||||
ShutdownFn: func() {
|
ShutdownFn: func() {
|
||||||
close(KubeletStop)
|
close(KubeletStop)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartKubeletServer(clusterDomain, clusterDNS string) func() {
|
func StartKubeletServer(clusterDomain, clusterDNS string, containerized bool) func() {
|
||||||
KubeletStop = make(chan struct{})
|
KubeletStop = make(chan struct{})
|
||||||
config := options.NewKubeletServer()
|
config := options.NewKubeletServer()
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ func StartKubeletServer(clusterDomain, clusterDNS string) func() {
|
||||||
config.APIServerList = []string{APIServerURL}
|
config.APIServerList = []string{APIServerURL}
|
||||||
|
|
||||||
// Docker
|
// Docker
|
||||||
config.Containerized = true
|
config.Containerized = containerized
|
||||||
config.DockerEndpoint = WeaveProxySock
|
config.DockerEndpoint = WeaveProxySock
|
||||||
|
|
||||||
// Networking
|
// Networking
|
||||||
|
@ -59,7 +59,11 @@ func StartKubeletServer(clusterDomain, clusterDNS string) func() {
|
||||||
config.ClusterDNS = clusterDNS
|
config.ClusterDNS = clusterDNS
|
||||||
|
|
||||||
// use hosts resolver config
|
// 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 {
|
schedFn := func() error {
|
||||||
return kubelet.Run(config, nil)
|
return kubelet.Run(config, nil)
|
||||||
|
|
|
@ -32,19 +32,19 @@ func (lk *LocalKube) Add(server Server) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lk *LocalKube) Run(args []string, out io.Writer) error {
|
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")
|
return errors.New("you must choose start <name>, stop <name>, or status")
|
||||||
}
|
}
|
||||||
|
|
||||||
switch args[1] {
|
switch args[0] {
|
||||||
case "start":
|
case "start":
|
||||||
// check if just start
|
// check if just start
|
||||||
if len(args) == 2 {
|
if len(args) == 1 {
|
||||||
fmt.Fprintln(out, "Starting LocalKube...")
|
fmt.Fprintln(out, "Starting LocalKube...")
|
||||||
lk.StartAll()
|
lk.StartAll()
|
||||||
return nil
|
return nil
|
||||||
} else if len(args) == 3 {
|
} else if len(args) == 2 {
|
||||||
serverName := args[2]
|
serverName := args[1]
|
||||||
fmt.Fprintf(out, "Starting `%s`...\n", serverName)
|
fmt.Fprintf(out, "Starting `%s`...\n", serverName)
|
||||||
return lk.Start(serverName)
|
return lk.Start(serverName)
|
||||||
|
|
||||||
|
@ -53,12 +53,12 @@ func (lk *LocalKube) Run(args []string, out io.Writer) error {
|
||||||
}
|
}
|
||||||
case "stop":
|
case "stop":
|
||||||
// check if just stop
|
// check if just stop
|
||||||
if len(args) == 2 {
|
if len(args) == 1 {
|
||||||
fmt.Fprintln(out, "Stopping LocalKube...")
|
fmt.Fprintln(out, "Stopping LocalKube...")
|
||||||
lk.StopAll()
|
lk.StopAll()
|
||||||
return nil
|
return nil
|
||||||
} else if len(args) == 3 {
|
} else if len(args) == 2 {
|
||||||
serverName := args[2]
|
serverName := args[1]
|
||||||
fmt.Fprintf(out, "Stopping `%s`...\n", serverName)
|
fmt.Fprintf(out, "Stopping `%s`...\n", serverName)
|
||||||
return lk.Stop(serverName)
|
return lk.Stop(serverName)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue