Documentation ¶
Index ¶
- Variables
- func NewAPI(sess *session.Session, region string) pricingiface.PricingAPI
- type Controller
- type Err
- type Provider
- func (p *Provider) InstanceTypes() []string
- func (p *Provider) LivenessProbe(req *http.Request) error
- func (p *Provider) OnDemandLastUpdated() time.Time
- func (p *Provider) OnDemandPrice(instanceType string) (float64, bool)
- func (p *Provider) Reset()
- func (p *Provider) SpotLastUpdated() time.Time
- func (p *Provider) SpotPrice(instanceType string, zone string) (float64, bool)
- func (p *Provider) UpdateOnDemandPricing(ctx context.Context) error
- func (p *Provider) UpdateSpotPricing(ctx context.Context) error
Constants ¶
This section is empty.
Variables ¶
var ( InstanceTypeLabel = "instance_type" CapacityTypeLabel = "capacity_type" RegionLabel = "region" TopologyLabel = "zone" InstancePriceEstimate = prometheus.NewGaugeVec( prometheus.GaugeOpts{ Namespace: metrics.Namespace, Subsystem: cloudProviderSubsystem, Name: "instance_type_price_estimate", Help: "Estimated hourly price used when making informed decisions on node cost calculation. This is updated once on startup and then every 12 hours.", }, []string{ InstanceTypeLabel, CapacityTypeLabel, RegionLabel, TopologyLabel, }) )
Functions ¶
func NewAPI ¶
func NewAPI(sess *session.Session, region string) pricingiface.PricingAPI
NewPricingAPI returns a pricing API configured based on a particular region
Types ¶
type Controller ¶ added in v0.27.3
type Controller struct {
// contains filtered or unexported fields
}
func NewController ¶ added in v0.27.3
func NewController(pricingProvider *Provider) *Controller
func (*Controller) Builder ¶ added in v0.27.3
func (c *Controller) Builder(_ context.Context, m manager.Manager) corecontroller.Builder
func (*Controller) Name ¶ added in v0.27.3
func (c *Controller) Name() string
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider provides actual pricing data to the AWS cloud provider to allow it to make more informed decisions regarding which instances to launch. This is initialized at startup with a periodically updated static price list to support running in locations where pricing data is unavailable. In those cases the static pricing data provides a relative ordering that is still more accurate than our previous pricing model. In the event that a pricing update fails, the previous pricing information is retained and used which may be the static initial pricing data if pricing updates never succeed.
func NewProvider ¶
func NewProvider(ctx context.Context, pricing pricingiface.PricingAPI, ec2Api ec2iface.EC2API, region string) *Provider
func (*Provider) InstanceTypes ¶
InstanceTypes returns the list of all instance types for which either a spot or on-demand price is known.
func (*Provider) OnDemandLastUpdated ¶
OnDemandLastUpdated returns the time that the on-demand pricing was last updated
func (*Provider) OnDemandPrice ¶
OnDemandPrice returns the last known on-demand price for a given instance type, returning an error if there is no known on-demand pricing for the instance type.
func (*Provider) SpotLastUpdated ¶
SpotLastUpdated returns the time that the spot pricing was last updated
func (*Provider) SpotPrice ¶
SpotPrice returns the last known spot price for a given instance type and zone, returning an error if there is no known spot pricing for that instance type or zone