View Source
const (
	// NodeHealthUpdateRetry controls the number of retries of writing
	// node health update.
	NodeHealthUpdateRetry = 5
	// NodeEvictionPeriod controls how often NodeController will try to
	// evict Pods from non-responsive Nodes.
	NodeEvictionPeriod = 100 * time.Millisecond
	// EvictionRateLimiterBurst is the burst value for all eviction rate
	// limiters
	EvictionRateLimiterBurst = 1
View Source
const (

	// NodeUpdateChannelSize defines the size of channel for node update events.
	NodeUpdateChannelSize = 10
	// UpdateWorkerSize defines the size of workers for node update or/and pod update.
	UpdateWorkerSize = 8


This section is empty.


This section is empty.


type ActionFunc

type ActionFunc func(TimedValue) (bool, time.Duration)

    ActionFunc takes a timed value and returns false if the item must be retried, with an optional time.Duration if some minimum wait interval should be used.

    type GetNodeFunc

    type GetNodeFunc func(name string) (*v1.Node, error)

      GetNodeFunc returns the node for the specified name, or a NotFound error if missing.

      type GetPodFunc

      type GetPodFunc func(name, namespace string) (*v1.Pod, error)

        GetPodFunc returns the pod for the specified name/namespace, or a NotFound error if missing.

        type NoExecuteTaintManager

        type NoExecuteTaintManager struct {
        	// contains filtered or unexported fields

          NoExecuteTaintManager listens to Taint/Toleration changes and is responsible for removing Pods from Nodes tainted with NoExecute Taints.

          func NewNoExecuteTaintManager

          func NewNoExecuteTaintManager(c clientset.Interface, getPod GetPodFunc, getNode GetNodeFunc) *NoExecuteTaintManager

            NewNoExecuteTaintManager creates a new NoExecuteTaintManager that will use passed clientset to communicate with the API server.

            func (*NoExecuteTaintManager) NodeUpdated

            func (tc *NoExecuteTaintManager) NodeUpdated(oldNode *v1.Node, newNode *v1.Node)

              NodeUpdated is used to notify NoExecuteTaintManager about Node changes.

              func (*NoExecuteTaintManager) PodUpdated

              func (tc *NoExecuteTaintManager) PodUpdated(oldPod *v1.Pod, newPod *v1.Pod)

                PodUpdated is used to notify NoExecuteTaintManager about Pod changes.

                func (*NoExecuteTaintManager) Run

                func (tc *NoExecuteTaintManager) Run(stopCh <-chan struct{})

                  Run starts NoExecuteTaintManager which will run in loop until `stopCh` is closed.

                  type RateLimitedTimedQueue

                  type RateLimitedTimedQueue struct {
                  	// contains filtered or unexported fields

                    RateLimitedTimedQueue is a unique item priority queue ordered by the expected next time of execution. It is also rate limited.

                    func NewRateLimitedTimedQueue

                    func NewRateLimitedTimedQueue(limiter flowcontrol.RateLimiter) *RateLimitedTimedQueue

                      NewRateLimitedTimedQueue creates new queue which will use given RateLimiter to oversee execution.

                      func (*RateLimitedTimedQueue) Add

                      func (q *RateLimitedTimedQueue) Add(value string, uid interface{}) bool

                        Add value to the queue to be processed. Won't add the same value(comparison by value) a second time if it was already added and not removed.

                        func (*RateLimitedTimedQueue) Clear

                        func (q *RateLimitedTimedQueue) Clear()

                          Clear removes all items from the queue

                          func (*RateLimitedTimedQueue) Remove

                          func (q *RateLimitedTimedQueue) Remove(value string) bool

                            Remove Node from the Evictor. The Node won't be processed until added again.

                            func (*RateLimitedTimedQueue) SwapLimiter

                            func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32)

                              SwapLimiter safely swaps current limiter for this queue with the passed one if capacities or qps's differ.

                              func (*RateLimitedTimedQueue) Try

                              func (q *RateLimitedTimedQueue) Try(fn ActionFunc)

                                Try processes the queue.Ends prematurely if RateLimiter forbids an action and leak is true. Otherwise, requeues the item to be processed. Each value is processed once if fn returns true, otherwise it is added back to the queue. The returned remaining is used to identify the minimum time to execute the next item in the queue. The same value is processed only once unless Remove is explicitly called on it (it's done by the cancelPodEviction function in NodeController when Node becomes Ready again) TODO: figure out a good way to do garbage collection for all Nodes that were removed from the cluster.

                                type TimedQueue

                                type TimedQueue []*TimedValue

                                  TimedQueue is a priority heap where the lowest ProcessAt is at the front of the queue

                                  func (TimedQueue) Len

                                  func (h TimedQueue) Len() int

                                    Len is the length of the queue.

                                    func (TimedQueue) Less

                                    func (h TimedQueue) Less(i, j int) bool

                                      Less returns true if queue[i] < queue[j].

                                      func (*TimedQueue) Pop

                                      func (h *TimedQueue) Pop() interface{}

                                        Pop the lowest ProcessAt item.

                                        func (*TimedQueue) Push

                                        func (h *TimedQueue) Push(x interface{})

                                          Push a new TimedValue on to the queue.

                                          func (TimedQueue) Swap

                                          func (h TimedQueue) Swap(i, j int)

                                            Swap swaps index i and j.

                                            type TimedValue

                                            type TimedValue struct {
                                            	Value string
                                            	// UID could be anything that helps identify the value
                                            	UID       interface{}
                                            	AddedAt   time.Time
                                            	ProcessAt time.Time

                                              TimedValue is a value that should be processed at a designated time.

                                              type TimedWorker

                                              type TimedWorker struct {
                                              	WorkItem  *WorkArgs
                                              	CreatedAt time.Time
                                              	FireAt    time.Time
                                              	Timer     *time.Timer

                                                TimedWorker is a responsible for executing a function no earlier than at FireAt time.

                                                func CreateWorker

                                                func CreateWorker(args *WorkArgs, createdAt time.Time, fireAt time.Time, f func(args *WorkArgs) error) *TimedWorker

                                                  CreateWorker creates a TimedWorker that will execute `f` not earlier than `fireAt`.

                                                  func (*TimedWorker) Cancel

                                                  func (w *TimedWorker) Cancel()

                                                    Cancel cancels the execution of function by the `TimedWorker`

                                                    type TimedWorkerQueue

                                                    type TimedWorkerQueue struct {
                                                    	// contains filtered or unexported fields

                                                      TimedWorkerQueue keeps a set of TimedWorkers that are still wait for execution.

                                                      func CreateWorkerQueue

                                                      func CreateWorkerQueue(f func(args *WorkArgs) error) *TimedWorkerQueue

                                                        CreateWorkerQueue creates a new TimedWorkerQueue for workers that will execute given function `f`.

                                                        func (*TimedWorkerQueue) AddWork

                                                        func (q *TimedWorkerQueue) AddWork(args *WorkArgs, createdAt time.Time, fireAt time.Time)

                                                          AddWork adds a work to the WorkerQueue which will be executed not earlier than `fireAt`.

                                                          func (*TimedWorkerQueue) CancelWork

                                                          func (q *TimedWorkerQueue) CancelWork(key string) bool

                                                            CancelWork removes scheduled function execution from the queue. Returns true if work was cancelled.

                                                            func (*TimedWorkerQueue) GetWorkerUnsafe

                                                            func (q *TimedWorkerQueue) GetWorkerUnsafe(key string) *TimedWorker

                                                              GetWorkerUnsafe returns a TimedWorker corresponding to the given key. Unsafe method - workers have attached goroutines which can fire afater this function is called.

                                                              type UniqueQueue

                                                              type UniqueQueue struct {
                                                              	// contains filtered or unexported fields

                                                                UniqueQueue is a FIFO queue which additionally guarantees that any element can be added only once until it is removed.

                                                                func (*UniqueQueue) Add

                                                                func (q *UniqueQueue) Add(value TimedValue) bool

                                                                  Add a new value to the queue if it wasn't added before, or was explicitly removed by the Remove call. Returns true if new value was added.

                                                                  func (*UniqueQueue) Clear

                                                                  func (q *UniqueQueue) Clear()

                                                                    Clear removes all items from the queue and duplication preventing set.

                                                                    func (*UniqueQueue) Get

                                                                    func (q *UniqueQueue) Get() (TimedValue, bool)

                                                                      Get returns the oldest added value that wasn't returned yet.

                                                                      func (*UniqueQueue) Head

                                                                      func (q *UniqueQueue) Head() (TimedValue, bool)

                                                                        Head returns the oldest added value that wasn't returned yet without removing it.

                                                                        func (*UniqueQueue) Remove

                                                                        func (q *UniqueQueue) Remove(value string) bool

                                                                          Remove the value from the queue, so Get() call won't return it, and allow subsequent addition of the given value. If the value is not present does nothing and returns false.

                                                                          func (*UniqueQueue) RemoveFromQueue

                                                                          func (q *UniqueQueue) RemoveFromQueue(value string) bool

                                                                            RemoveFromQueue the value from the queue, but keeps it in the set, so it won't be added second time. Returns true if something was removed.

                                                                            func (*UniqueQueue) Replace

                                                                            func (q *UniqueQueue) Replace(value TimedValue) bool

                                                                              Replace replaces an existing value in the queue if it already exists, otherwise it does nothing. Returns true if the item was found.

                                                                              type WorkArgs

                                                                              type WorkArgs struct {
                                                                              	NamespacedName types.NamespacedName

                                                                                WorkArgs keeps arguments that will be passed to the function executed by the worker.

                                                                                func NewWorkArgs

                                                                                func NewWorkArgs(name, namespace string) *WorkArgs

                                                                                  NewWorkArgs is a helper function to create new `WorkArgs`

                                                                                  func (*WorkArgs) KeyFromWorkArgs

                                                                                  func (w *WorkArgs) KeyFromWorkArgs() string

                                                                                    KeyFromWorkArgs creates a key for the given `WorkArgs`