eviction

package
v1.12.0-alpha.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2018 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Package eviction is responsible for enforcing eviction thresholds to maintain node stability.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseThresholdConfig

func ParseThresholdConfig(allocatableConfig []string, evictionHard, evictionSoft, evictionSoftGracePeriod, evictionMinimumReclaim map[string]string) ([]evictionapi.Threshold, error)

ParseThresholdConfig parses the flags for thresholds.

func PodIsEvicted added in v1.4.0

func PodIsEvicted(podStatus v1.PodStatus) bool

PodIsEvicted returns true if the reported pod status is due to an eviction.

Types

type ActivePodsFunc

type ActivePodsFunc func() []*v1.Pod

ActivePodsFunc returns pods bound to the kubelet that are active (i.e. non-terminal state)

type Config

type Config struct {
	// PressureTransitionPeriod is duration the kubelet has to wait before transititioning out of a pressure condition.
	PressureTransitionPeriod time.Duration
	// Maximum allowed grace period (in seconds) to use when terminating pods in response to a soft eviction threshold being met.
	MaxPodGracePeriodSeconds int64
	// Thresholds define the set of conditions monitored to trigger eviction.
	Thresholds []evictionapi.Threshold
	// KernelMemcgNotification if true will integrate with the kernel memcg notification to determine if memory thresholds are crossed.
	KernelMemcgNotification bool
	// PodCgroupRoot is the cgroup which contains all pods.
	PodCgroupRoot string
}

Config holds information about how eviction is configured.

type ContainerGC added in v1.7.0

type ContainerGC interface {
	// DeleteAllUnusedContainers deletes all unused containers, even those that belong to pods that are terminated, but not deleted.
	DeleteAllUnusedContainers() error
}

ContainerGC is responsible for performing garbage collection of unused containers.

type DiskInfoProvider added in v1.4.0

type DiskInfoProvider interface {
	// HasDedicatedImageFs returns true if the imagefs is on a separate device from the rootfs.
	HasDedicatedImageFs() (bool, error)
}

DiskInfoProvider is responsible for informing the manager how disk is configured.

type ImageGC added in v1.4.0

type ImageGC interface {
	// DeleteUnusedImages deletes unused images.
	DeleteUnusedImages() error
}

ImageGC is responsible for performing garbage collection of unused images.

type KillPodFunc

type KillPodFunc func(pod *v1.Pod, status v1.PodStatus, gracePeriodOverride *int64) error

KillPodFunc kills a pod. The pod status is updated, and then it is killed with the specified grace period. This function must block until either the pod is killed or an error is encountered. Arguments: pod - the pod to kill status - the desired status to associate with the pod (i.e. why its killed) gracePeriodOverride - the grace period override to use instead of what is on the pod spec

type Manager

type Manager interface {
	// Start starts the control loop to monitor eviction thresholds at specified interval.
	Start(diskInfoProvider DiskInfoProvider, podFunc ActivePodsFunc, podCleanedUpFunc PodCleanedUpFunc, monitoringInterval time.Duration)

	// IsUnderMemoryPressure returns true if the node is under memory pressure.
	IsUnderMemoryPressure() bool

	// IsUnderDiskPressure returns true if the node is under disk pressure.
	IsUnderDiskPressure() bool

	// IsUnderPIDPressure returns true if the node is under PID pressure.
	IsUnderPIDPressure() bool
}

Manager evaluates when an eviction threshold for node stability has been met on the node.

func NewManager

func NewManager(
	summaryProvider stats.SummaryProvider,
	config Config,
	killPodFunc KillPodFunc,
	imageGC ImageGC,
	containerGC ContainerGC,
	recorder record.EventRecorder,
	nodeRef *v1.ObjectReference,
	clock clock.Clock,
) (Manager, lifecycle.PodAdmitHandler)

NewManager returns a configured Manager and an associated admission handler to enforce eviction configuration.

type PodCleanedUpFunc added in v1.7.0

type PodCleanedUpFunc func(*v1.Pod) bool

PodCleanedUpFunc returns true if all resources associated with a pod have been reclaimed.

type ThresholdNotifier added in v1.5.0

type ThresholdNotifier interface {
	Start(ThresholdStopCh)
}

ThresholdNotifier notifies the user when an attribute crosses a threshold value

func NewMemCGThresholdNotifier added in v1.5.0

func NewMemCGThresholdNotifier(path, attribute, threshold, description string, handler thresholdNotifierHandlerFunc) (ThresholdNotifier, error)

NewMemCGThresholdNotifier sends notifications when a cgroup threshold is crossed (in either direction) for a given cgroup attribute

type ThresholdStopCh

type ThresholdStopCh interface {
	// Reset closes the channel if it can be closed, and returns true if it was closed.
	// Reset also creates a new channel.
	Reset() bool
	// Ch returns the channel that is closed when Reset() is called
	Ch() <-chan struct{}
}

ThresholdStopCh is an interface for a channel which is closed to stop waiting goroutines. Implementations of ThresholdStopCh must correctly handle concurrent calls to all functions.

func NewInitialStopCh

func NewInitialStopCh(clock clock.Clock) ThresholdStopCh

NewInitialStopCh returns a ThresholdStopCh which can be closed immediately

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL