Documentation ¶
Index ¶
- Constants
- func CheckEvictionSupport(clientset kubernetes.Interface) (string, error)
- func RunCordonOrUncordon(drainer *Helper, node *corev1.Node, desired bool) error
- func RunNodeDrain(drainer *Helper, nodeName string) error
- type CordonHelper
- func (c *CordonHelper) PatchOrReplace(clientset kubernetes.Interface, serverDryRun bool) (error, error)
- func (c *CordonHelper) PatchOrReplaceWithContext(clientCtx context.Context, clientset kubernetes.Interface, serverDryRun bool) (error, error)
- func (c *CordonHelper) UpdateIfRequired(desired bool) bool
- type Helper
- type PodDelete
- type PodDeleteList
- type PodDeleteStatus
- type PodFilter
Constants ¶
const ( // EvictionKind represents the kind of evictions object EvictionKind = "Eviction" // EvictionSubresource represents the kind of evictions object as pod's subresource EvictionSubresource = "pods/eviction" PodEvictionRetryInterval = 20 * time.Second )
const ( // PodDeleteStatusTypeOkay is "Okay" PodDeleteStatusTypeOkay = "Okay" // PodDeleteStatusTypeSkip is "Skip" PodDeleteStatusTypeSkip = "Skip" // PodDeleteStatusTypeWarning is "Warning" PodDeleteStatusTypeWarning = "Warning" // PodDeleteStatusTypeError is "Error" PodDeleteStatusTypeError = "Error" )
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 ¶
RunCordonOrUncordon demonstrates the canonical way to cordon or uncordon a Node
func RunNodeDrain ¶
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, serverDryRun bool) (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) PatchOrReplaceWithContext ¶
func (c *CordonHelper) PatchOrReplaceWithContext(clientCtx context.Context, clientset kubernetes.Interface, serverDryRun bool) (error, error)
PatchOrReplaceWithContext provides the option to pass a custom context while updating the node status
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 is how long to wait for a pod to terminate. // IMPORTANT: 0 means "delete immediately"; set to a negative value // to use the pod's terminationGracePeriodSeconds. GracePeriodSeconds int IgnoreAllDaemonSets bool IgnoreErrors bool Timeout time.Duration DeleteEmptyDirData 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 // AdditionalFilters are applied sequentially after base drain filters to // exclude pods using custom logic. Any filter that returns PodDeleteStatus // with Delete == false will immediately stop execution of further filters. AdditionalFilters []PodFilter Out io.Writer ErrOut io.Writer // 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 NewDrainer ¶
func NewDrainer(kubeClient kubernetes.Interface, errOut io.Writer) *Helper
func (*Helper) DeleteOrEvictPods ¶
DeleteOrEvictPods deletes or evicts the pods on the api server
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.
type PodDelete ¶
type PodDelete struct { Pod corev1.Pod Status PodDeleteStatus }
PodDelete informs filtering logic whether a pod should be deleted or not
type PodDeleteList ¶
type PodDeleteList struct {
// contains filtered or unexported fields
}
PodDeleteList is a wrapper around []PodDelete
func (*PodDeleteList) Pods ¶
func (l *PodDeleteList) Pods() []corev1.Pod
Pods returns a list of all pods marked for deletion after filtering.
func (*PodDeleteList) Warnings ¶
func (l *PodDeleteList) Warnings() string
Warnings returns all warning messages concatenated into a string.
type PodDeleteStatus ¶
PodDeleteStatus informs filters if a pod should be deleted
func MakePodDeleteStatusOkay ¶
func MakePodDeleteStatusOkay() PodDeleteStatus
MakePodDeleteStatusOkay is a helper method to return the corresponding PodDeleteStatus
func MakePodDeleteStatusSkip ¶
func MakePodDeleteStatusSkip() PodDeleteStatus
MakePodDeleteStatusSkip is a helper method to return the corresponding PodDeleteStatus
func MakePodDeleteStatusWithError ¶
func MakePodDeleteStatusWithError(message string) PodDeleteStatus
MakePodDeleteStatusWithError is a helper method to return the corresponding PodDeleteStatus
func MakePodDeleteStatusWithWarning ¶
func MakePodDeleteStatusWithWarning(delete bool, message string) PodDeleteStatus
MakePodDeleteStatusWithWarning is a helper method to return the corresponding PodDeleteStatus
type PodFilter ¶
type PodFilter func(corev1.Pod) PodDeleteStatus
PodFilter takes a pod and returns a PodDeleteStatus