// Starts api services (the master). Never returns. func api_server() { machineList := util.StringList{*kubelet_address} etcdClient := etcd.NewClient([]string{*etcd_server}) podRegistry := registry.MakeEtcdRegistry(etcdClient, machineList) controllerRegistry := registry.MakeEtcdRegistry(etcdClient, machineList) serviceRegistry := registry.MakeEtcdRegistry(etcdClient, machineList) containerInfo := &client.HTTPContainerInfo{ Client: http.DefaultClient, Port: *kubelet_port, } random := rand.New(rand.NewSource(int64(time.Now().Nanosecond()))) storage := map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(podRegistry, containerInfo, registry.MakeFirstFitScheduler(machineList, podRegistry, random)), "replicationControllers": registry.MakeControllerRegistryStorage(controllerRegistry), "services": registry.MakeServiceRegistryStorage(serviceRegistry), } endpoints := registry.MakeEndpointController(serviceRegistry, podRegistry) go util.Forever(func() { endpoints.SyncServiceEndpoints() }, time.Second*10) s := &http.Server{ Addr: fmt.Sprintf("%s:%d", *master_address, *master_port), Handler: apiserver.New(storage, *apiPrefix), ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } log.Fatal(s.ListenAndServe()) }
func (m *kubernetesMaster) init(scheduler kscheduler.Scheduler, cloud cloudprovider.Interface, podInfoGetter client.PodInfoGetter) { podCache := master.NewPodCache(podInfoGetter, m.podRegistry, cachePeriod) go podCache.Loop() m.storage = map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(m.podRegistry, podInfoGetter, scheduler, m.minionRegistry, cloud, podCache), "replicationControllers": registry.NewControllerRegistryStorage(m.controllerRegistry, m.podRegistry), "services": registry.MakeServiceRegistryStorage(m.serviceRegistry, cloud, m.minionRegistry), "minions": registry.MakeMinionRegistryStorage(m.minionRegistry), } }
func (m *Master) init(cloud cloudprovider.Interface, podInfoGetter client.PodInfoGetter) { podCache := NewPodCache(podInfoGetter, m.podRegistry, time.Second*30) go podCache.Loop() random := rand.New(rand.NewSource(int64(time.Now().Nanosecond()))) s := scheduler.NewRandomFitScheduler(m.podRegistry, random) m.storage = map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(m.podRegistry, podInfoGetter, s, m.minionRegistry, cloud, podCache), "replicationControllers": registry.NewControllerRegistryStorage(m.controllerRegistry, m.podRegistry), "services": registry.MakeServiceRegistryStorage(m.serviceRegistry, cloud, m.minionRegistry), "minions": registry.MakeMinionRegistryStorage(m.minionRegistry), } }
func main() { flag.Parse() if len(machineList) == 0 { log.Fatal("No machines specified!") } var ( podRegistry registry.PodRegistry controllerRegistry registry.ControllerRegistry serviceRegistry registry.ServiceRegistry ) if len(etcdServerList) > 0 { log.Printf("Creating etcd client pointing to %v", etcdServerList) etcdClient := etcd.NewClient(etcdServerList) podRegistry = registry.MakeEtcdRegistry(etcdClient, machineList) controllerRegistry = registry.MakeEtcdRegistry(etcdClient, machineList) serviceRegistry = registry.MakeEtcdRegistry(etcdClient, machineList) } else { podRegistry = registry.MakeMemoryRegistry() controllerRegistry = registry.MakeMemoryRegistry() serviceRegistry = registry.MakeMemoryRegistry() } containerInfo := &kube_client.HTTPContainerInfo{ Client: http.DefaultClient, Port: 10250, } random := rand.New(rand.NewSource(int64(time.Now().Nanosecond()))) storage := map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(podRegistry, containerInfo, registry.MakeFirstFitScheduler(machineList, podRegistry, random)), "replicationControllers": registry.MakeControllerRegistryStorage(controllerRegistry), "services": registry.MakeServiceRegistryStorage(serviceRegistry), } endpoints := registry.MakeEndpointController(serviceRegistry, podRegistry) go util.Forever(func() { endpoints.SyncServiceEndpoints() }, time.Second*10) s := &http.Server{ Addr: fmt.Sprintf("%s:%d", *address, *port), Handler: apiserver.New(storage, *apiPrefix), ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } log.Fatal(s.ListenAndServe()) }
func (m *Master) init(minions []string, cloud cloudprovider.Interface) { containerInfo := &client.HTTPContainerInfo{ Client: http.DefaultClient, Port: 10250, } m.minions = minions m.random = rand.New(rand.NewSource(int64(time.Now().Nanosecond()))) m.storage = map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(m.podRegistry, containerInfo, registry.MakeFirstFitScheduler(m.minions, m.podRegistry, m.random)), "replicationControllers": registry.MakeControllerRegistryStorage(m.controllerRegistry), "services": registry.MakeServiceRegistryStorage(m.serviceRegistry, cloud, m.minions), } }