scheduler

package
v0.0.0-...-651eacd Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2014 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package framework includes a kubernetes framework. that implements the interfaces of:

1: The mesos scheduler.

2: The kubernetes scheduler.

3: The kubernetes pod registry.

It acts as the 'scheduler' and the 'registry' of the PodRegistryStorage to provide scheduling and Pod management on top of mesos.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRanges

func NewRanges(ports []uint64) *mesos.Value_Ranges

func NewRange(begin uint64, end uint64) *mesos.Value_Ranges {

Types

type KubernetesScheduler

type KubernetesScheduler struct {
	// We use a lock here to avoid races
	// between invoking the mesos callback
	// and the invoking the pob registry interfaces.
	*sync.RWMutex

	Driver mesos.SchedulerDriver
	// contains filtered or unexported fields
}

KubernetesScheduler implements: 1: The interfaces of the mesos scheduler. 2: The interface of a kubernetes scheduler. 3: The interfaces of a kubernetes pod registry.

func New

func New(executor *mesos.ExecutorInfo, scheduleFunc PodScheduleFunc) *KubernetesScheduler

New create a new KubernetesScheduler

func (*KubernetesScheduler) CreatePod

func (k *KubernetesScheduler) CreatePod(machine string, pod api.Pod) error

Create a pod based on a specification, schedule it onto a specific machine.

func (*KubernetesScheduler) DeletePod

func (k *KubernetesScheduler) DeletePod(podID string) error

Delete an existing pod.

func (*KubernetesScheduler) Disconnected

func (k *KubernetesScheduler) Disconnected(driver mesos.SchedulerDriver)

Disconnected is called when the scheduler loses connection to the master.

func (*KubernetesScheduler) Error

func (k *KubernetesScheduler) Error(driver mesos.SchedulerDriver, message string)

Error is called when there is some error.

func (*KubernetesScheduler) ExecutorLost

func (k *KubernetesScheduler) ExecutorLost(driver mesos.SchedulerDriver,
	executorId *mesos.ExecutorID, slaveId *mesos.SlaveID, status int)

ExecutorLost is called when some executor is lost.

func (*KubernetesScheduler) FrameworkMessage

func (k *KubernetesScheduler) FrameworkMessage(driver mesos.SchedulerDriver,
	executorId *mesos.ExecutorID, slaveId *mesos.SlaveID, message string)

FrameworkMessage is called when the scheduler receives a message from the executor.

func (*KubernetesScheduler) GetPod

func (k *KubernetesScheduler) GetPod(podID string) (*api.Pod, error)

Get a specific pod.

func (*KubernetesScheduler) ListPods

func (k *KubernetesScheduler) ListPods(selector labels.Selector) ([]api.Pod, error)

ListPods obtains a list of pods that match selector.

func (*KubernetesScheduler) OfferRescinded

func (k *KubernetesScheduler) OfferRescinded(driver mesos.SchedulerDriver, offerId *mesos.OfferID)

OfferRescinded is called when the resources are recinded from the scheduler.

func (*KubernetesScheduler) Registered

func (k *KubernetesScheduler) Registered(driver mesos.SchedulerDriver,
	frameworkId *mesos.FrameworkID, masterInfo *mesos.MasterInfo)

Registered is called when the scheduler registered with the master successfully.

func (*KubernetesScheduler) Reregistered

func (k *KubernetesScheduler) Reregistered(driver mesos.SchedulerDriver, masterInfo *mesos.MasterInfo)

Reregistered is called when the scheduler re-registered with the master successfully. This happends when the master fails over.

func (*KubernetesScheduler) ResourceOffers

func (k *KubernetesScheduler) ResourceOffers(driver mesos.SchedulerDriver, offers []*mesos.Offer)

ResourceOffers is called when the scheduler receives some offers from the master.

func (*KubernetesScheduler) Schedule

func (k *KubernetesScheduler) Schedule(pod api.Pod, minionLister kubernetes.MinionLister) (string, error)

Schedule implements the Scheduler interface of the Kubernetes. It returns the selectedMachine's name and error (if there's any).

func (*KubernetesScheduler) SlaveLost

func (k *KubernetesScheduler) SlaveLost(driver mesos.SchedulerDriver, slaveId *mesos.SlaveID)

SlaveLost is called when some slave is lost.

func (*KubernetesScheduler) StatusUpdate

func (k *KubernetesScheduler) StatusUpdate(driver mesos.SchedulerDriver, taskStatus *mesos.TaskStatus)

StatusUpdate is called when a status update message is sent to the scheduler.

func (*KubernetesScheduler) UpdatePod

func (k *KubernetesScheduler) UpdatePod(pod api.Pod) error

Update an existing pod.

type PodScheduleFunc

type PodScheduleFunc func(slaves map[string]*Slave, tasks map[string]*PodTask) []*PodTask

PodScheduleFunc implements how to schedule pods among slaves. We can have different implementation for different scheduling policy.

The Schedule function takes a group of slaves (each contains offers from that slave), and a group of pods.

After deciding which slave to schedule the pod, it fills the task info and the 'SelectedMachine' channel with the host name of the slave. See the FIFOScheduleFunc for example.

type PodTask

type PodTask struct {
	ID              string
	Pod             *api.Pod
	Machines        []string
	SelectedMachine chan string
	TaskInfo        *mesos.TaskInfo
	OfferIds        []string
}

A struct describes a pod task.

func FCFSScheduleFunc

func FCFSScheduleFunc(slaves map[string]*Slave, tasks map[string]*PodTask) []*PodTask

A FCFS scheduler.

func (*PodTask) AcceptOffer

func (t *PodTask) AcceptOffer(slaveId string, offer *mesos.Offer) bool

func (*PodTask) FillTaskInfo

func (t *PodTask) FillTaskInfo(slaveId string, offer *mesos.Offer)

Fill the TaskInfo in the PodTask, should be called in PodScheduleFunc.

func (*PodTask) Ports

func (t *PodTask) Ports() []uint64

type Slave

type Slave struct {
	HostName string
	Offers   map[string]*mesos.Offer
	// contains filtered or unexported fields
}

A struct that describes the slave.

Jump to

Keyboard shortcuts

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