Convert the scheduler binary to hyperkube.

This commit is contained in:
Joe Beda
2015-01-30 15:59:27 -08:00
parent bbb4479166
commit b89454a48e
3 changed files with 119 additions and 53 deletions

View File

@@ -17,69 +17,22 @@ limitations under the License.
package main
import (
"net"
"net/http"
"strconv"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record"
_ "github.com/GoogleCloudPlatform/kubernetes/pkg/healthz"
"github.com/GoogleCloudPlatform/kubernetes/pkg/master/ports"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/GoogleCloudPlatform/kubernetes/pkg/version/verflag"
"github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler"
_ "github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/algorithmprovider"
"github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/factory"
"github.com/golang/glog"
"github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/server"
flag "github.com/spf13/pflag"
"github.com/spf13/pflag"
)
var (
port = flag.Int("port", ports.SchedulerPort, "The port that the scheduler's http service runs on")
address = util.IP(net.ParseIP("127.0.0.1"))
clientConfig = &client.Config{}
algorithmProvider = flag.String("algorithm_provider", factory.DefaultProvider, "The scheduling algorithm provider to use")
)
func init() {
flag.Var(&address, "address", "The IP address to serve on (set to 0.0.0.0 for all interfaces)")
client.BindClientConfigFlags(flag.CommandLine, clientConfig)
}
func main() {
s := server.NewSchedulerServer()
s.AddFlags(pflag.CommandLine)
util.InitFlags()
util.InitLogs()
defer util.FlushLogs()
verflag.PrintAndExitIfRequested()
kubeClient, err := client.New(clientConfig)
if err != nil {
glog.Fatalf("Invalid API configuration: %v", err)
}
record.StartRecording(kubeClient.Events(""), api.EventSource{Component: "scheduler"})
go http.ListenAndServe(net.JoinHostPort(address.String(), strconv.Itoa(*port)), nil)
configFactory := factory.NewConfigFactory(kubeClient)
config, err := createConfig(configFactory)
if err != nil {
glog.Fatalf("Failed to create scheduler configuration: %v", err)
}
s := scheduler.New(config)
s.Run()
select {}
}
func createConfig(configFactory *factory.ConfigFactory) (*scheduler.Config, error) {
// check of algorithm provider is registered and fail fast
_, err := factory.GetAlgorithmProvider(*algorithmProvider)
if err != nil {
return nil, err
}
return configFactory.CreateFromProvider(*algorithmProvider)
s.Run(pflag.CommandLine.Args())
}