Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CloudProvider ¶
type CloudProvider interface { // Create a node given constraints and instance type options. This API uses a // callback pattern to enable cloudproviders to batch capacity creation // requests. The callback must be called with a theoretical node object that // is fulfilled by the cloud providers capacity creation request. Create(context.Context, *v1alpha1.Machine) (*v1.Node, error) // Delete node in cloudprovider Delete(context.Context, *v1.Node) error // GetInstanceTypes returns instance types supported by the cloudprovider. // Availability of types or zone may vary by provisioner or over time. Regardless of // availability, the GetInstanceTypes method should always return all instance types, // even those with no offerings available. GetInstanceTypes(context.Context, *v1alpha5.Provisioner) ([]*InstanceType, error) // IsNodeDrifted returns whether a machine has drifted from the provisioning requirements // it is tied to. IsMachineDrifted(context.Context, *v1alpha1.Machine) (bool, error) // Name returns the CloudProvider implementation name. Name() string }
CloudProvider interface is implemented by cloud providers to support provisioning.
type Context ¶
type Context struct { context.Context RESTConfig *rest.Config KubernetesInterface kubernetes.Interface KubeClient client.Client EventRecorder events.Recorder Clock clock.Clock // StartAsync is a channel that is closed when leader election has been won. This is a signal to start any async // processing that should only occur while the cloud provider is the leader. StartAsync <-chan struct{} }
Context is injected into CloudProvider's factories
type InstanceType ¶
type InstanceType struct { // Name of the instance type, must correspond to v1.LabelInstanceTypeStable Name string // Requirements returns a flexible set of properties that may be selected // for scheduling. Must be defined for every well known label, even if empty. Requirements scheduling.Requirements // Note that though this is an array it is expected that all the Offerings are unique from one another Offerings Offerings // Resources are the full resource capacities for this instance type Capacity v1.ResourceList // Overhead is the amount of resource overhead expected to be used by kubelet and any other system daemons outside // of Kubernetes. Overhead *InstanceTypeOverhead }
InstanceType describes the properties of a potential node (either concrete attributes of an instance of this type or supported options in the case of arrays)
type InstanceTypeOverhead ¶
type InstanceTypeOverhead struct { // KubeReserved returns the default resources allocated to kubernetes system daemons by default KubeReserved v1.ResourceList // SystemReserved returns the default resources allocated to the OS system daemons by default SystemReserved v1.ResourceList // EvictionThreshold returns the resources used to maintain a hard eviction threshold EvictionThreshold v1.ResourceList }
func (InstanceTypeOverhead) Total ¶
func (i InstanceTypeOverhead) Total() v1.ResourceList
type Offering ¶
type Offering struct { CapacityType string Zone string Price float64 // Available is added so that Offerings can return all offerings that have ever existed for an instance type, // so we can get historical pricing data for calculating savings in consolidation Available bool }
An Offering describes where an InstanceType is available to be used, with the expectation that its properties may be tightly coupled (e.g. the availability of an instance type in some zone is scoped to a capacity type)
type Offerings ¶
type Offerings []Offering
func (Offerings) Get ¶
Get gets the offering from an offering slice that matches the passed zone and capacity type
func (Offerings) Requirements ¶
func (ofs Offerings) Requirements(reqs scheduling.Requirements) Offerings
Requirements filters the offerings based on the passed requirements