Documentation ¶
Overview ¶
Package scheduler implements the Kubernetes Mesos scheduler.
Index ¶
- type AllocationStrategy
- type Config
- type KubernetesScheduler
- func (k *KubernetesScheduler) Disconnected(driver bindings.SchedulerDriver)
- func (k *KubernetesScheduler) Error(driver bindings.SchedulerDriver, message string)
- func (k *KubernetesScheduler) ExecutorLost(driver bindings.SchedulerDriver, executorId *mesos.ExecutorID, ...)
- func (k *KubernetesScheduler) FrameworkMessage(driver bindings.SchedulerDriver, executorId *mesos.ExecutorID, ...)
- func (k *KubernetesScheduler) Init(electedMaster proc.Process, pl PluginInterface, mux *http.ServeMux) error
- func (k *KubernetesScheduler) InstallDebugHandlers(mux *http.ServeMux)
- func (k *KubernetesScheduler) NewDefaultPluginConfig(terminate <-chan struct{}, mux *http.ServeMux) *PluginConfig
- func (k *KubernetesScheduler) NewPluginConfig(terminate <-chan struct{}, mux *http.ServeMux, podsWatcher *cache.ListWatch) *PluginConfig
- func (k *KubernetesScheduler) OfferRescinded(driver bindings.SchedulerDriver, offerId *mesos.OfferID)
- func (k *KubernetesScheduler) Registered(drv bindings.SchedulerDriver, fid *mesos.FrameworkID, mi *mesos.MasterInfo)
- func (k *KubernetesScheduler) Registration() <-chan struct{}
- func (k *KubernetesScheduler) Reregistered(drv bindings.SchedulerDriver, mi *mesos.MasterInfo)
- func (k *KubernetesScheduler) ResourceOffers(driver bindings.SchedulerDriver, offers []*mesos.Offer)
- func (k *KubernetesScheduler) SlaveLost(driver bindings.SchedulerDriver, slaveId *mesos.SlaveID)
- func (k *KubernetesScheduler) StatusUpdate(driver bindings.SchedulerDriver, taskStatus *mesos.TaskStatus)
- type PluginConfig
- type PluginInterface
- type Pod
- type PodScheduler
- type Reconciler
- type ReconcilerAction
- type SlaveIndex
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AllocationStrategy ¶
type AllocationStrategy interface { // FitPredicate returns the selector used to determine pod fitness w/ respect to a given offer FitPredicate() podtask.FitPredicate // Procurement returns a func that obtains resources for a task from resource offer Procurement() podtask.Procurement }
func NewAllocationStrategy ¶
func NewAllocationStrategy(fitPredicate podtask.FitPredicate, procurement podtask.Procurement) AllocationStrategy
type Config ¶
type Config struct { Schedcfg schedcfg.Config Executor *mesos.ExecutorInfo Scheduler PodScheduler Client *client.Client EtcdClient tools.EtcdClient FailoverTimeout float64 ReconcileInterval int64 ReconcileCooldown time.Duration }
type KubernetesScheduler ¶
type KubernetesScheduler struct { // We use a lock here to avoid races // between invoking the mesos callback // and the invoking the pod registry interfaces. // In particular, changes to podtask.T objects are currently guarded by this lock. *sync.RWMutex PodScheduler // contains filtered or unexported fields }
KubernetesScheduler implements: 1: A mesos scheduler. 2: A kubernetes scheduler plugin. 3: A kubernetes pod.Registry.
func (*KubernetesScheduler) Disconnected ¶
func (k *KubernetesScheduler) Disconnected(driver bindings.SchedulerDriver)
Disconnected is called when the scheduler loses connection to the master.
func (*KubernetesScheduler) Error ¶
func (k *KubernetesScheduler) Error(driver bindings.SchedulerDriver, message string)
Error is called when there is an unrecoverable error in the scheduler or scheduler driver. The driver should have been aborted before this is invoked.
func (*KubernetesScheduler) ExecutorLost ¶
func (k *KubernetesScheduler) ExecutorLost(driver bindings.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 bindings.SchedulerDriver, executorId *mesos.ExecutorID, slaveId *mesos.SlaveID, message string)
FrameworkMessage is called when the scheduler receives a message from the executor.
func (*KubernetesScheduler) Init ¶
func (k *KubernetesScheduler) Init(electedMaster proc.Process, pl PluginInterface, mux *http.ServeMux) error
func (*KubernetesScheduler) InstallDebugHandlers ¶
func (k *KubernetesScheduler) InstallDebugHandlers(mux *http.ServeMux)
func (*KubernetesScheduler) NewDefaultPluginConfig ¶
func (k *KubernetesScheduler) NewDefaultPluginConfig(terminate <-chan struct{}, mux *http.ServeMux) *PluginConfig
Create creates a scheduler plugin and all supporting background functions.
func (*KubernetesScheduler) NewPluginConfig ¶
func (k *KubernetesScheduler) NewPluginConfig(terminate <-chan struct{}, mux *http.ServeMux, podsWatcher *cache.ListWatch) *PluginConfig
func (*KubernetesScheduler) OfferRescinded ¶
func (k *KubernetesScheduler) OfferRescinded(driver bindings.SchedulerDriver, offerId *mesos.OfferID)
OfferRescinded is called when the resources are recinded from the scheduler.
func (*KubernetesScheduler) Registered ¶
func (k *KubernetesScheduler) Registered(drv bindings.SchedulerDriver, fid *mesos.FrameworkID, mi *mesos.MasterInfo)
Registered is called when the scheduler registered with the master successfully.
func (*KubernetesScheduler) Registration ¶
func (k *KubernetesScheduler) Registration() <-chan struct{}
func (*KubernetesScheduler) Reregistered ¶
func (k *KubernetesScheduler) Reregistered(drv bindings.SchedulerDriver, mi *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 bindings.SchedulerDriver, offers []*mesos.Offer)
ResourceOffers is called when the scheduler receives some offers from the master.
func (*KubernetesScheduler) SlaveLost ¶
func (k *KubernetesScheduler) SlaveLost(driver bindings.SchedulerDriver, slaveId *mesos.SlaveID)
SlaveLost is called when some slave is lost.
func (*KubernetesScheduler) StatusUpdate ¶
func (k *KubernetesScheduler) StatusUpdate(driver bindings.SchedulerDriver, taskStatus *mesos.TaskStatus)
StatusUpdate is called when a status update message is sent to the scheduler.
type PluginConfig ¶
type PluginInterface ¶
type PluginInterface interface { // execute the Scheduling plugin, should start a go routine and return immediately Run(<-chan struct{}) // contains filtered or unexported methods }
func NewPlugin ¶
func NewPlugin(c *PluginConfig) PluginInterface
type PodScheduler ¶
type PodScheduler interface { AllocationStrategy // SchedulePod implements how to schedule pods among slaves. // We can have different implementation for different scheduling policy. // // The function accepts a group of slaves (each contains offers from // that slave) and a single pod, which aligns well with the k8s scheduling // algorithm. It returns an offerId that is acceptable for the pod, otherwise // nil. The caller is responsible for filling in task state w/ relevant offer // details. // // See the FCFSPodScheduler for example. SchedulePod(r offers.Registry, slaves SlaveIndex, task *podtask.T) (offers.Perishable, error) }
func NewFCFSPodScheduler ¶
func NewFCFSPodScheduler(as AllocationStrategy) PodScheduler
type Reconciler ¶
type Reconciler struct { proc.Doer Action ReconcilerAction // contains filtered or unexported fields }
func (*Reconciler) RequestExplicit ¶
func (r *Reconciler) RequestExplicit()
func (*Reconciler) RequestImplicit ¶
func (r *Reconciler) RequestImplicit()
func (*Reconciler) Run ¶
func (r *Reconciler) Run(driver bindings.SchedulerDriver)
execute task reconciliation, returns when r.done is closed. intended to run as a goroutine. if reconciliation is requested while another is in progress, the in-progress operation will be cancelled before the new reconciliation operation begins.
type ReconcilerAction ¶
type ReconcilerAction func(driver bindings.SchedulerDriver, cancel <-chan struct{}) <-chan error
type SlaveIndex ¶
type SlaveIndex interface {
// contains filtered or unexported methods
}
Directories ¶
Path | Synopsis |
---|---|
Package config provides mechanisms for low-level scheduler tuning.
|
Package config provides mechanisms for low-level scheduler tuning. |
Package constraint exposes Marathon-like constraints for scheduling pods.
|
Package constraint exposes Marathon-like constraints for scheduling pods. |
Package ha encapsulates high-availability scheduler concerns.
|
Package ha encapsulates high-availability scheduler concerns. |
Package meta defines framework constants used as keys in k8s annotations that are attached to k8s pods.
|
Package meta defines framework constants used as keys in k8s annotations that are attached to k8s pods. |
Package metrics defines and exposes instrumentation metrics of the scheduler.
|
Package metrics defines and exposes instrumentation metrics of the scheduler. |
Package podtask maps Kubernetes pods to Mesos tasks.
|
Package podtask maps Kubernetes pods to Mesos tasks. |
Package resource contains the Mesos scheduler specific resource functions
|
Package resource contains the Mesos scheduler specific resource functions |
Package service contains the cmd/k8sm-scheduler glue code
|
Package service contains the cmd/k8sm-scheduler glue code |
Package slave manages node hostnames for slave ids.
|
Package slave manages node hostnames for slave ids. |
Package uid encapsulates unique identifiers code used by the scheduler.
|
Package uid encapsulates unique identifiers code used by the scheduler. |