cluster-api: Index | Files

package drain

import ""


Package Files

cordon.go default.go drain.go filters.go


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

func CheckEvictionSupport Uses

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 Uses

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

RunCordonOrUncordon demonstrates the canonical way to cordon or uncordon a Node

func RunNodeDrain Uses

func RunNodeDrain(ctx context.Context, drainer *Helper, nodeName string) error

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

type CordonHelper Uses

type CordonHelper struct {
    // contains filtered or unexported fields

CordonHelper wraps functionality to cordon/uncordon nodes

func NewCordonHelper Uses

func NewCordonHelper(node *corev1.Node) *CordonHelper

NewCordonHelper returns a new CordonHelper

func NewCordonHelperFromRuntimeObject Uses

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 Uses

func (c *CordonHelper) PatchOrReplace(ctx context.Context, 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 Uses

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 Uses

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 Uses

func (d *Helper) DeleteOrEvictPods(ctx context.Context, pods []corev1.Pod) error

DeleteOrEvictPods deletes or evicts the pods on the api server

func (*Helper) DeletePod Uses

func (d *Helper) DeletePod(ctx context.Context, pod corev1.Pod) error

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

func (*Helper) EvictPod Uses

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

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

func (*Helper) GetPodsForDeletion Uses

func (d *Helper) GetPodsForDeletion(ctx context.Context, 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.

Package drain imports 21 packages (graph) and is imported by 2 packages. Updated 2020-11-19. Refresh now. Tools for package owners.