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 ¶
- func NewRanges(ports []uint64) *mesos.Value_Ranges
- type KubernetesScheduler
- func (k *KubernetesScheduler) CreatePod(machine string, pod api.Pod) error
- func (k *KubernetesScheduler) DeletePod(podID string) error
- func (k *KubernetesScheduler) Disconnected(driver mesos.SchedulerDriver)
- func (k *KubernetesScheduler) Error(driver mesos.SchedulerDriver, message string)
- func (k *KubernetesScheduler) ExecutorLost(driver mesos.SchedulerDriver, executorId *mesos.ExecutorID, ...)
- func (k *KubernetesScheduler) FrameworkMessage(driver mesos.SchedulerDriver, executorId *mesos.ExecutorID, ...)
- func (k *KubernetesScheduler) GetPod(podID string) (*api.Pod, error)
- func (k *KubernetesScheduler) ListPods(selector labels.Selector) ([]api.Pod, error)
- func (k *KubernetesScheduler) OfferRescinded(driver mesos.SchedulerDriver, offerId *mesos.OfferID)
- func (k *KubernetesScheduler) Registered(driver mesos.SchedulerDriver, frameworkId *mesos.FrameworkID, ...)
- func (k *KubernetesScheduler) Reregistered(driver mesos.SchedulerDriver, masterInfo *mesos.MasterInfo)
- func (k *KubernetesScheduler) ResourceOffers(driver mesos.SchedulerDriver, offers []*mesos.Offer)
- func (k *KubernetesScheduler) Schedule(pod api.Pod, minionLister kubernetes.MinionLister) (string, error)
- func (k *KubernetesScheduler) SlaveLost(driver mesos.SchedulerDriver, slaveId *mesos.SlaveID)
- func (k *KubernetesScheduler) StatusUpdate(driver mesos.SchedulerDriver, taskStatus *mesos.TaskStatus)
- func (k *KubernetesScheduler) UpdatePod(pod api.Pod) error
- type PodScheduleFunc
- type PodTask
- type Slave
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) 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.
type PodScheduleFunc ¶
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 ¶
A FCFS scheduler.
func (*PodTask) AcceptOffer ¶
func (*PodTask) FillTaskInfo ¶
Fill the TaskInfo in the PodTask, should be called in PodScheduleFunc.