diff --git a/cmd/controller-manager/controller-manager.go b/cmd/controller-manager/controller-manager.go index f09d7192ca..8781876bca 100644 --- a/cmd/controller-manager/controller-manager.go +++ b/cmd/controller-manager/controller-manager.go @@ -27,7 +27,7 @@ import ( "os" "time" - kube_client "github.com/GoogleCloudPlatform/kubernetes/pkg/client" + "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/registry" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/coreos/go-etcd/etcd" @@ -49,7 +49,7 @@ func main() { etcd.SetLogger(log.New(os.Stderr, "etcd ", log.LstdFlags)) controllerManager := registry.MakeReplicationManager(etcd.NewClient([]string{*etcd_servers}), - kube_client.Client{ + client.Client{ Host: "http://" + *master, }) diff --git a/cmd/kubelet/kubelet.go b/cmd/kubelet/kubelet.go index acfa8cbb2b..7c6071036d 100644 --- a/cmd/kubelet/kubelet.go +++ b/cmd/kubelet/kubelet.go @@ -34,13 +34,14 @@ import ( var ( file = flag.String("config", "", "Path to the config file") - etcd_servers = flag.String("etcd_servers", "", "Url of etcd servers in the cluster") + etcdServers = flag.String("etcd_servers", "", "Url of etcd servers in the cluster") syncFrequency = flag.Duration("sync_frequency", 10*time.Second, "Max period between synchronizing running containers and config") fileCheckFrequency = flag.Duration("file_check_frequency", 20*time.Second, "Duration between checking file for new data") httpCheckFrequency = flag.Duration("http_check_frequency", 20*time.Second, "Duration between checking http for new data") - manifest_url = flag.String("manifest_url", "", "URL for accessing the container manifest") + manifestUrl = flag.String("manifest_url", "", "URL for accessing the container manifest") address = flag.String("address", "127.0.0.1", "The address for the info server to serve on") port = flag.Uint("port", 10250, "The port for the info server to serve on") + hostnameOverride = flag.String("hostname_override", "", "If non-empty, will use this string as identification instead of the actual hostname.") ) const dockerBinary = "/usr/bin/docker" @@ -58,9 +59,12 @@ func main() { log.Fatal("Couldn't connnect to docker.") } - hostname, err := exec.Command("hostname", "-f").Output() - if err != nil { - log.Fatalf("Couldn't determine hostname: %v", err) + hostname := []byte(*hostnameOverride) + if string(hostname) == "" { + hostname, err = exec.Command("hostname", "-f").Output() + if err != nil { + log.Fatalf("Couldn't determine hostname: %v", err) + } } my_kubelet := kubelet.Kubelet{ @@ -70,5 +74,5 @@ func main() { SyncFrequency: *syncFrequency, HTTPCheckFrequency: *httpCheckFrequency, } - my_kubelet.RunKubelet(*file, *manifest_url, *etcd_servers, *address, *port) + my_kubelet.RunKubelet(*file, *manifestUrl, *etcdServers, *address, *port) } diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh new file mode 100755 index 0000000000..36b1c44e6e --- /dev/null +++ b/hack/local-up-cluster.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This command builds and runs a local kubernetes cluster. It's just like +# local-up.sh, but this one launches the three separate binaries. +# You may need to run this as root to allow kubelet to open docker's socket. + +if [ "$(which etcd)" == "" ]; then + echo "etcd must be in your PATH" + exit 1 +fi + +# Stop right away if the build fails +set -e + +$(dirname $0)/build-go.sh + +echo "Starting etcd" + +ETCD_DIR=$(mktemp -d -t kube-integration.XXXXXX) +trap "rm -rf ${ETCD_DIR}" EXIT + +etcd -name test -data-dir ${ETCD_DIR} &> /tmp/etcd.log & +ETCD_PID=$! + +sleep 5 + +# Shut down anyway if there's an error. +set +e + +API_PORT=8080 +KUBELET_PORT=10250 + + +$(dirname $0)/../output/go/apiserver \ + --address="127.0.0.1" \ + --port="${API_PORT}" \ + --etcd_servers="http://127.0.0.1:4001" \ + --machines="127.0.0.1" &> /tmp/apiserver.log & +APISERVER_PID=$! + +$(dirname $0)/../output/go/controller-manager \ + --etcd_servers="http://127.0.0.1:4001" \ + --master="127.0.0.1:${API_PORT}" &> /tmp/controller-manager.log & +CTLRMGR_PID=$! + +$(dirname $0)/../output/go/kubelet \ + --etcd_servers="http://127.0.0.1:4001" \ + --hostname_override="127.0.0.1" \ + --address="127.0.0.1" \ + --port="$KUBELET_PORT" &> /tmp/kubelet.log & +KUBELET_PID=$! + +echo "Local Kubernetes cluster is running. Press enter to shut it down." +read unused + +kill ${APISERVER_PID} +kill ${CTLRMGR_PID} +kill ${KUBELET_PID} +kill ${ETCD_PID}