README

The code in this directory has been copied from: github.com/kubernetes/kubectl/pkg/drain@a17d91f9f5b34c73bed0bfc75b70bd762b725231

Expand ▾ Collapse ▴

Documentation

Index

Constants

View Source
const (
	// EvictionKind represents the kind of evictions object
	EvictionKind = "Eviction"
	// EvictionSubresource represents the kind of evictions object as pod's subresource
	EvictionSubresource = "pods/eviction"
)

Variables

This section is empty.

Functions

func CheckEvictionSupport

func CheckEvictionSupport(clientset kubernetes.Interface) (string, error)

    CheckEvictionSupport uses Discovery API to find out if the server support eviction subresource If support, it will return its groupVersion; Otherwise, it will return an empty string

    func RunCordonOrUncordon

    func RunCordonOrUncordon(drainer *Helper, node *corev1.Node, desired bool) error

      RunCordonOrUncordon demonstrates the canonical way to cordon or uncordon a Node

      func RunNodeDrain

      func RunNodeDrain(drainer *Helper, nodeName string) error

        RunNodeDrain shows the canonical way to drain a node. You should first cordon the node, e.g. using RunCordonOrUncordon

        Types

        type CordonHelper

        type CordonHelper struct {
        	// contains filtered or unexported fields
        }

          CordonHelper wraps functionality to cordon/uncordon nodes

          func NewCordonHelper

          func NewCordonHelper(node *corev1.Node) *CordonHelper

            NewCordonHelper returns a new CordonHelper

            func NewCordonHelperFromRuntimeObject

            func NewCordonHelperFromRuntimeObject(nodeObject runtime.Object, scheme *runtime.Scheme, gvk schema.GroupVersionKind) (*CordonHelper, error)

              NewCordonHelperFromRuntimeObject returns a new CordonHelper, or an error if given object is not a node or cannot be encoded as JSON

              func (*CordonHelper) PatchOrReplace

              func (c *CordonHelper) PatchOrReplace(clientset kubernetes.Interface) (error, error)

                PatchOrReplace uses given clientset to update the node status, either by patching or updating the given node object; it may return error if the object cannot be encoded as JSON, or if either patch or update calls fail; it will also return a second error whenever creating a patch has failed

                func (*CordonHelper) UpdateIfRequired

                func (c *CordonHelper) UpdateIfRequired(desired bool) bool

                  UpdateIfRequired returns true if c.node.Spec.Unschedulable isn't already set, or false when no change is needed

                  type Helper

                  type Helper struct {
                  	Ctx                 context.Context
                  	Client              kubernetes.Interface
                  	Force               bool
                  	GracePeriodSeconds  int
                  	IgnoreAllDaemonSets bool
                  	Timeout             time.Duration
                  	DeleteLocalData     bool
                  	Selector            string
                  	PodSelector         string
                  
                  	// DisableEviction forces drain to use delete rather than evict
                  	DisableEviction bool
                  
                  	// SkipWaitForDeleteTimeoutSeconds ignores pods that have a
                  	// DeletionTimeStamp > N seconds. It's up to the user to decide when this
                  	// option is appropriate; examples include the Node is unready and the pods
                  	// won't drain otherwise
                  	SkipWaitForDeleteTimeoutSeconds int
                  
                  	Out    io.Writer
                  	ErrOut io.Writer
                  
                  	// TODO(justinsb): unnecessary?
                  	DryRun bool
                  
                  	// OnPodDeletedOrEvicted is called when a pod is evicted/deleted; for printing progress output
                  	OnPodDeletedOrEvicted func(pod *corev1.Pod, usingEviction bool)
                  }

                    Helper contains the parameters to control the behaviour of drainer

                    func (*Helper) DeleteOrEvictPods

                    func (d *Helper) DeleteOrEvictPods(pods []corev1.Pod) error

                      DeleteOrEvictPods deletes or evicts the pods on the api server

                      func (*Helper) DeletePod

                      func (d *Helper) DeletePod(pod corev1.Pod) error

                        DeletePod will delete the given pod, or return an error if it couldn't

                        func (*Helper) EvictPod

                        func (d *Helper) EvictPod(pod corev1.Pod, policyGroupVersion string) error

                          EvictPod will evict the give pod, or return an error if it couldn't

                          func (*Helper) GetPodsForDeletion

                          func (d *Helper) GetPodsForDeletion(nodeName string) (*podDeleteList, []error)

                            GetPodsForDeletion receives resource info for a node, and returns those pods as PodDeleteList, or error if it cannot list pods. All pods that are ready to be deleted can be obtained with .Pods(), and string with all warning can be obtained with .Warnings(), and .Errors() for all errors that occurred during deletion.