master

package
v1.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2016 License: Apache-2.0, Apache-2.0 Imports: 85 Imported by: 0

Documentation

Overview

Package master contains code for setting up and running a Kubernetes cluster master.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddressFunc added in v1.0.7

type AddressFunc func() (addresses []string, err error)

type Config

type Config struct {
	*genericapiserver.Config

	EnableCoreControllers   bool
	DeleteCollectionWorkers int
	EventTTL                time.Duration
	KubeletClient           kubeletclient.KubeletClient
	// Used to start and monitor tunneling
	Tunneler Tunneler
}

type Controller

type Controller struct {
	NamespaceRegistry namespace.Registry
	ServiceRegistry   service.Registry
	// TODO: MasterCount is yucky
	MasterCount int

	ServiceClusterIPRegistry service.RangeRegistry
	ServiceClusterIPInterval time.Duration
	ServiceClusterIPRange    *net.IPNet

	ServiceNodePortRegistry service.RangeRegistry
	ServiceNodePortInterval time.Duration
	ServiceNodePortRange    utilnet.PortRange

	EndpointRegistry endpoint.Registry
	EndpointInterval time.Duration

	PublicIP net.IP

	ServiceIP                 net.IP
	ServicePort               int
	ExtraServicePorts         []api.ServicePort
	ExtraEndpointPorts        []api.EndpointPort
	PublicServicePort         int
	KubernetesServiceNodePort int
	// contains filtered or unexported fields
}

Controller is the controller manager for the core bootstrap Kubernetes controller loops, which manage creating the "kubernetes" service, the "default" namespace, and provide the IP repair check on service IPs

func (*Controller) CreateNamespaceIfNeeded

func (c *Controller) CreateNamespaceIfNeeded(ns string) error

CreateNamespaceIfNeeded will create the namespace that contains the master services if it doesn't already exist

func (*Controller) CreateOrUpdateMasterServiceIfNeeded added in v1.0.8

func (c *Controller) CreateOrUpdateMasterServiceIfNeeded(serviceName string, serviceIP net.IP, servicePorts []api.ServicePort, serviceType api.ServiceType, reconcile bool) error

CreateMasterServiceIfNeeded will create the specified service if it doesn't already exist.

func (*Controller) ReconcileEndpoints added in v1.0.8

func (c *Controller) ReconcileEndpoints(serviceName string, ip net.IP, endpointPorts []api.EndpointPort, reconcilePorts bool) error

ReconcileEndpoints sets the endpoints for the given apiserver service (ro or rw). ReconcileEndpoints expects that the endpoints objects it manages will all be managed only by ReconcileEndpoints; therefore, to understand this, you need only understand the requirements and the body of this function.

Requirements:

  • All apiservers MUST use the same ports for their {rw, ro} services.
  • All apiservers MUST use ReconcileEndpoints and only ReconcileEndpoints to manage the endpoints for their {rw, ro} services.
  • All apiservers MUST know and agree on the number of apiservers expected to be running (c.masterCount).
  • ReconcileEndpoints is called periodically from all apiservers.

func (*Controller) RunKubernetesService

func (c *Controller) RunKubernetesService(ch chan struct{})

RunKubernetesService periodically updates the kubernetes service

func (*Controller) Start

func (c *Controller) Start()

Start begins the core controller loops that must exist for bootstrapping a cluster.

func (*Controller) UpdateKubernetesService

func (c *Controller) UpdateKubernetesService(reconcile bool) error

UpdateKubernetesService attempts to update the default Kube service.

type InstallSSHKey

type InstallSSHKey func(user string, data []byte) error

type Master

type Master struct {
	*genericapiserver.GenericAPIServer
	// contains filtered or unexported fields
}

Master contains state for a Kubernetes cluster master/api server.

func New

func New(c *Config) (*Master, error)

New returns a new instance of Master from the given config. Certain config fields will be set to a default value if unset. Certain config fields must be specified, including:

KubeletClient

func (*Master) HasThirdPartyResource added in v1.0.7

func (m *Master) HasThirdPartyResource(rsrc *extensions.ThirdPartyResource) (bool, error)

HasThirdPartyResource returns true if a particular third party resource currently installed.

func (*Master) InstallAPIs added in v1.1.3

func (m *Master) InstallAPIs(c *Config)

func (*Master) InstallThirdPartyResource added in v1.0.7

func (m *Master) InstallThirdPartyResource(rsrc *extensions.ThirdPartyResource) error

InstallThirdPartyResource installs a third party resource specified by 'rsrc'. When a resource is installed a corresponding RESTful resource is added as a valid path in the web service provided by the master.

For example, if you install a resource ThirdPartyResource{ Name: "foo.company.com", Versions: {"v1"} } then the following RESTful resource is created on the server:

http://<host>/apis/company.com/v1/foos/...

func (*Master) IsTunnelSyncHealthy

func (m *Master) IsTunnelSyncHealthy(req *http.Request) error

func (*Master) ListThirdPartyResources added in v1.0.7

func (m *Master) ListThirdPartyResources() []string

ListThirdPartyResources lists all currently installed third party resources

func (*Master) NewBootstrapController

func (m *Master) NewBootstrapController() *Controller

NewBootstrapController returns a controller for watching the core capabilities of the master.

func (*Master) RemoveThirdPartyResource added in v1.0.7

func (m *Master) RemoveThirdPartyResource(path string) error

RemoveThirdPartyResource removes all resources matching `path`. Also deletes any stored data

type SSHTunneler added in v1.0.7

type SSHTunneler struct {
	SSHUser        string
	SSHKeyfile     string
	InstallSSHKey  InstallSSHKey
	HealthCheckURL *url.URL
	// contains filtered or unexported fields
}

func (*SSHTunneler) Dial added in v1.0.7

func (c *SSHTunneler) Dial(net, addr string) (net.Conn, error)

func (*SSHTunneler) Run added in v1.0.7

func (c *SSHTunneler) Run(getAddresses AddressFunc)

Run establishes tunnel loops and returns

func (*SSHTunneler) SecondsSinceSync added in v1.0.7

func (c *SSHTunneler) SecondsSinceSync() int64

func (*SSHTunneler) Stop added in v1.0.7

func (c *SSHTunneler) Stop()

Stop gracefully shuts down the tunneler

type ThirdPartyController added in v1.0.7

type ThirdPartyController struct {
	// contains filtered or unexported fields
}

ThirdPartyController is a control loop that knows how to synchronize ThirdPartyResource objects with RESTful resources which are present in the API server.

func (*ThirdPartyController) SyncOneResource added in v1.0.7

func (t *ThirdPartyController) SyncOneResource(rsrc *expapi.ThirdPartyResource) error

Synchronize a single resource with RESTful resources on the master

func (*ThirdPartyController) SyncResources added in v1.0.7

func (t *ThirdPartyController) SyncResources() error

Synchronize all resources with RESTful resources on the master

type Tunneler added in v1.0.7

type Tunneler interface {
	Run(AddressFunc)
	Stop()
	Dial(net, addr string) (net.Conn, error)
	SecondsSinceSync() int64
}

func NewSSHTunneler added in v1.0.7

func NewSSHTunneler(sshUser, sshKeyfile string, healthCheckURL *url.URL, installSSHKey InstallSSHKey) Tunneler

Directories

Path Synopsis
Package ports defines ports used by various pieces of the kubernetes infrastructure.
Package ports defines ports used by various pieces of the kubernetes infrastructure.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL