OC-ADM-DRAIN(1)
π oc adm drain π
okay bestie, welcome to the OC ADM(1) manual page β thatβs the manual name, folded in right up top like a little name tag. This one lives in the Openshift CLI User Manuals, and itβs all about draining a node before maintenance. π
π«Ά NAME π«Ά
oc adm drain β drain node in preparation for maintenance. slay.
β¨ SYNOPSIS β¨
oc adm drain [OPTIONS]
π¦ DESCRIPTION π¦
okay so the whole point: drain gets a node ready for maintenance. The given node is marked unschedulable so new pods canβt arrive. If the API server supports eviction (β¨https://kubernetes.io/docs/concepts/workloads/pods/disruptions/β© eviction β¨https://kubernetes.io/docs/concepts/workloads/pods/disruptions/β©), then drain evicts the pods. Otherwise, it uses normal DELETE to delete the pods. no cap. β¨
drain evicts or deletes all pods except mirror pods (those canβt be deleted through the API server). If there are daemon set-managed pods, drain will not proceed without --ignore-daemonsets, and regardless it will not delete any daemon set-managed pods, because those pods would be immediately replaced by the daemon set controller, which ignores unschedulable markings. π
If there are any pods that are neither mirror pods nor managed by a replication controller, replica set, daemon set, stateful set, or job, then drain will not delete any pods unless you use --force. --force will also allow deletion to proceed if the managing resource of one or more pods is missing. π₯
When youβre ready to put the node back into service, use oc adm uncordon, which will make the node schedulable again. periodt.
Diagram reference from the page: β¨https://kubernetes.io/images/docs/ocβ© adm_drain.svg. Workflow line: Workflowhttps://kubernetes.io/images/docs/oc adm_drain.svg. yes, that second one really has no space after Workflow β iykyk π
π OPTIONS π
--chunk-size=500β Ask for huge lists in chunks instead of dumping them all at once; pass0to disable chunking. π--delete-emptydir-data=falseβ Keep going even if pods are usingemptyDirβ thatβs local data that will be deleted when the node is drained. π--disable-eviction=falseβ Force drain to use delete even if eviction is supported. This bypasses checking PodDisruptionBudgets, so use with caution. π¨--dry-run="none"β Must be"none","server", or"client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit a server-side request without persisting the resource.--force=falseβ Continue even if there are pods that do not declare a controller.--grace-period=-1β Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used.--ignore-daemonsets=falseβ Ignore DaemonSet-managed pods.--pod-selector=""β Label selector to filter pods on the node.-l,--selector=""β Selector (label query) to filter on; supports'=','==','!=','in','notin'. (e.g.-l key1=value1,key2=value2,key3 in (value3)). Matching objects must satisfy all of the specified label constraints.--skip-wait-for-delete-timeout=0β If a podβs DeletionTimestamp is older than N seconds, skip waiting for the pod. Seconds must be greater than0to skip.--timeout=0β The length of time to wait before giving up; zero means infinite.
π OPTIONS INHERITED FROM PARENT COMMANDS π
These are inherited from the parent commands, bestie β still important, still here. π«Ά
--as=""β Username to impersonate for the operation. User could be a regular user or a service account in a namespace.--as-group=[]β Group to impersonate for the operation; this flag can be repeated to specify multiple groups.--as-uid=""β UID to impersonate for the operation.--as-user-extra=[]β User extras to impersonate for the operation; this flag can be repeated to specify multiple values for the same key.--cache-dir="/homeless-shelter/.kube/cache"β Default cache directory.--certificate-authority=""β Path to a cert file for the certificate authority.--client-certificate=""β Path to a client certificate file for TLS.--client-key=""β Path to a client key file for TLS.--cluster=""β The name of the kubeconfig cluster to use.--context=""β The name of the kubeconfig context to use.--disable-compression=falseβ If true, opt-out of response compression for all requests to the server.--insecure-skip-tls-verify=falseβ If true, the serverβs certificate will not be checked for validity. This will make your HTTPS connections insecure. π--kubeconfig=""β Path to the kubeconfig file to use for CLI requests.--kuberc=""β Path to the kuberc file to use for preferences. This can be disabled by exportingKUBECTL_KUBERC=falsefeature gate or turning off the featureKUBERC=off.--match-server-version=falseβ Require server version to match client version.-n,--namespace=""β If present, the namespace scope for this CLI request.--profile="none"β Name of profile to capture. One of(none|cpu|heap|goroutine|threadcreate|block|mutex).--profile-output="profile.pprof"β Name of the file to write the profile to.--request-timeout="0"β The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g.1s,2m,3h). A value of zero means donβt timeout requests.-s,--server=""β The address and port of the Kubernetes API server.--tls-server-name=""β Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used.--token=""β Bearer token for authentication to the API server.--user=""β The name of the kubeconfig user to use.--warnings-as-errors=falseβ Treat warnings received from the server as errors and exit with a non-zero exit code.
π EXAMPLE π
# Drain node "foo", even if there are pods not managed by a replication controller, replica set, job, daemon set, or stateful set on it
oc adm drain foo --force
# As above, but abort if there are pods not managed by a replication controller, replica set, job, daemon set, or stateful set, and use a grace period of 15 minutes
oc adm drain foo --grace-period=900
β SEE ALSO β
oc-adm(1), β go check that one too, bestie. π«Ά
π§ HISTORY π§
June 2016, Ported from the Kubernetes man-doc generator β thatβs the whole history entry, and it ate. π
source/version: Openshift / Openshift CLI User Manuals; date: June 2016. okay bye bestie, slay your maintenance window πβ¨
π¦ where this page comes from
- nixpkgs unstable: openshift 4.22.0-202605222050
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms