Documentation
¶
Index ¶
- func GetPodEvictionCost(ctx context.Context, p *v1.Pod) float64
- type Candidate
- type CandidateFilter
- type Command
- type Controller
- type Deprovisioner
- type Drift
- type Emptiness
- type EmptyMachineConsolidation
- type Expiration
- type MultiMachineConsolidation
- type PDBLimits
- type SingleMachineConsolidation
- type Validation
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Candidate ¶ added in v0.27.1
Candidate is a state.StateNode that we are considering for deprovisioning along with extra information to be used in making that determination
func GetCandidates ¶ added in v0.27.1
func GetCandidates(ctx context.Context, cluster *state.Cluster, kubeClient client.Client, clk clock.Clock, cloudProvider cloudprovider.CloudProvider, shouldDeprovision CandidateFilter) ([]*Candidate, error)
GetCandidates returns nodes that appear to be currently deprovisionable based off of their provisioner
func NewCandidate ¶ added in v0.27.1
type Controller ¶
type Controller struct {
// contains filtered or unexported fields
}
Controller is the deprovisioning controller.
func NewController ¶
func NewController(clk clock.Clock, kubeClient client.Client, provisioner *provisioning.Provisioner, cp cloudprovider.CloudProvider, recorder events.Recorder, cluster *state.Cluster) *Controller
func (*Controller) Builder ¶
func (c *Controller) Builder(_ context.Context, m manager.Manager) controller.Builder
func (*Controller) Name ¶
func (c *Controller) Name() string
type Deprovisioner ¶
type Drift ¶
type Drift struct {
// contains filtered or unexported fields
}
Drift is a subreconciler that deletes drifted machines.
func NewDrift ¶
func NewDrift(kubeClient client.Client, cluster *state.Cluster, provisioner *provisioning.Provisioner, recorder events.Recorder) *Drift
func (*Drift) ComputeCommand ¶
ComputeCommand generates a deprovisioning command given deprovisionable machines
func (*Drift) ShouldDeprovision ¶
ShouldDeprovision is a predicate used to filter deprovisionable machines
type Emptiness ¶
type Emptiness struct {
// contains filtered or unexported fields
}
Emptiness is a subreconciler that deletes empty machines. Emptiness will respect TTLSecondsAfterEmpty
func NewEmptiness ¶
func (*Emptiness) ComputeCommand ¶
ComputeCommand generates a deprovisioning command given deprovisionable machines
func (*Emptiness) ShouldDeprovision ¶
ShouldDeprovision is a predicate used to filter deprovisionable machines
type EmptyMachineConsolidation ¶ added in v0.27.1
type EmptyMachineConsolidation struct {
// contains filtered or unexported fields
}
EmptyMachineConsolidation is the consolidation controller that performs multi-machine consolidation of entirely empty machines
func NewEmptyMachineConsolidation ¶ added in v0.27.1
func NewEmptyMachineConsolidation(clk clock.Clock, cluster *state.Cluster, kubeClient client.Client, provisioner *provisioning.Provisioner, cp cloudprovider.CloudProvider, recorder events.Recorder) *EmptyMachineConsolidation
func (*EmptyMachineConsolidation) ComputeCommand ¶ added in v0.27.1
func (c *EmptyMachineConsolidation) ComputeCommand(ctx context.Context, candidates ...*Candidate) (Command, error)
ComputeCommand generates a deprovisioning command given deprovisionable machines
func (*EmptyMachineConsolidation) ShouldDeprovision ¶ added in v0.27.1
ShouldDeprovision is a predicate used to filter deprovisionable nodes
type Expiration ¶
type Expiration struct {
// contains filtered or unexported fields
}
Expiration is a subreconciler that deletes empty nodes. Expiration will respect TTLSecondsAfterEmpty
func NewExpiration ¶
func NewExpiration(clk clock.Clock, kubeClient client.Client, cluster *state.Cluster, provisioner *provisioning.Provisioner, recorder events.Recorder) *Expiration
func (*Expiration) ComputeCommand ¶
ComputeCommand generates a deprovisioning command given deprovisionable nodes
func (*Expiration) ShouldDeprovision ¶
func (e *Expiration) ShouldDeprovision(ctx context.Context, c *Candidate) bool
ShouldDeprovision is a predicate used to filter deprovisionable nodes
func (*Expiration) String ¶
func (e *Expiration) String() string
String is the string representation of the deprovisioner
type MultiMachineConsolidation ¶ added in v0.27.1
type MultiMachineConsolidation struct {
// contains filtered or unexported fields
}
func NewMultiMachineConsolidation ¶ added in v0.27.1
func NewMultiMachineConsolidation(clk clock.Clock, cluster *state.Cluster, kubeClient client.Client, provisioner *provisioning.Provisioner, cp cloudprovider.CloudProvider, recorder events.Recorder) *MultiMachineConsolidation
func (*MultiMachineConsolidation) ComputeCommand ¶ added in v0.27.1
func (*MultiMachineConsolidation) ShouldDeprovision ¶ added in v0.27.1
ShouldDeprovision is a predicate used to filter deprovisionable nodes
type PDBLimits ¶
type PDBLimits struct {
// contains filtered or unexported fields
}
PDBLimits is used to evaluate if evicting a list of pods is possible.
func NewPDBLimits ¶
type SingleMachineConsolidation ¶ added in v0.27.1
type SingleMachineConsolidation struct {
// contains filtered or unexported fields
}
SingleMachineConsolidation is the consolidation controller that performs single machine consolidation.
func NewSingleMachineConsolidation ¶ added in v0.27.1
func NewSingleMachineConsolidation(clk clock.Clock, cluster *state.Cluster, kubeClient client.Client, provisioner *provisioning.Provisioner, cp cloudprovider.CloudProvider, recorder events.Recorder) *SingleMachineConsolidation
func (*SingleMachineConsolidation) ComputeCommand ¶ added in v0.27.1
func (c *SingleMachineConsolidation) ComputeCommand(ctx context.Context, candidates ...*Candidate) (Command, error)
ComputeCommand generates a deprovisioning command given deprovisionable machines nolint:gocyclo
func (*SingleMachineConsolidation) ShouldDeprovision ¶ added in v0.27.1
ShouldDeprovision is a predicate used to filter deprovisionable nodes
type Validation ¶
type Validation struct {
// contains filtered or unexported fields
}
Validation is used to perform validation on a consolidation command. It makes an assumption that when re-used, all of the commands passed to IsValid were constructed based off of the same consolidation state. This allows it to skip the validation TTL for all but the first command.
func NewValidation ¶
func NewValidation(validationPeriod time.Duration, clk clock.Clock, cluster *state.Cluster, kubeClient client.Client, provisioner *provisioning.Provisioner, cp cloudprovider.CloudProvider, recorder events.Recorder) *Validation
func (*Validation) ShouldDeprovision ¶
func (v *Validation) ShouldDeprovision(_ context.Context, c *Candidate) bool
ShouldDeprovision is a predicate used to filter deprovisionable nodes
func (*Validation) ValidateCommand ¶
func (v *Validation) ValidateCommand(ctx context.Context, cmd Command, candidates []*Candidate) (bool, error)
ValidateCommand validates a command for a deprovisioner