kubectl 排空節點

概要

排空節點以準備維護。

給定的節點將標記為不可排程,以防止新的 Pod 抵達。「排空節點」會驅逐 Pod(如果 API 伺服器支援 https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/disruptions/ 驅逐 https://kubernetes.dev.org.tw/docs/concepts/workloads/pods/disruptions/)。否則,它將使用正常的 DELETE 來刪除 Pod。「排空節點」會驅逐或刪除所有 Pod,鏡像 Pod 除外(鏡像 Pod 無法透過 API 伺服器刪除)。如果存在 Daemon Set 管理的 Pod,「排空節點」將不會在沒有 --ignore-daemonsets 的情況下繼續進行,並且無論如何都不會刪除任何 Daemon Set 管理的 Pod,因為這些 Pod 會立即被 Daemon Set 控制器取代,而 Daemon Set 控制器會忽略不可排程的標記。如果存在任何既非鏡像 Pod 也非由複寫控制器、Replica Set、Daemon Set、Stateful Set 或工作管理的 Pod,則除非您使用 --force,「排空節點」否則不會刪除任何 Pod。如果遺失一個或多個 Pod 的管理資源,--force 也會允許刪除繼續進行。

「排空節點」會等待正常終止。在命令完成之前,您不應在機器上操作。

當您準備好將節點放回服務時,請使用 kubectl uncordon,這將使節點再次可排程。

https://kubernetes.dev.org.tw/images/docs/kubectl_drain.svg 工作流程https://kubernetes.dev.org.tw/images/docs/kubectl_drain.svg

kubectl drain NODE

範例

  # Drain node "foo", even if there are pods not managed by a replication controller, replica set, job, daemon set, or stateful set on it
  kubectl 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
  kubectl drain foo --grace-period=900

選項

--chunk-size int     預設值:500

以區塊傳回大型清單,而不是一次全部傳回。傳遞 0 以停用。此旗標為 Beta 版,未來可能會變更。

--delete-emptydir-data

即使有 Pod 使用 emptyDir(當節點排空時將刪除的本機資料),仍繼續進行。

--disable-eviction

強制「排空節點」使用 delete,即使支援驅逐也一樣。這將繞過 PodDisruptionBudgets 檢查,請謹慎使用。

--dry-run string[="unchanged"]     預設值:「none」

必須為「none」、「server」或「client」。如果為 client 策略,則僅列印將傳送的物件,而不傳送它。如果為 server 策略,則提交伺服器端請求而不持久儲存資源。

--force

即使有 Pod 未宣告控制器,仍繼續進行。

--grace-period int     預設值:-1

給予每個 Pod 正常終止的秒數時間段。如果為負數,將使用 Pod 中指定的預設值。

-h, --help

drain 的說明

--ignore-daemonsets

忽略 DaemonSet 管理的 Pod。

--pod-selector string

標籤選擇器,用於篩選節點上的 Pod

-l, --selector string

用於篩選的選擇器(標籤查詢),支援 '='、'==' 和 '!='。(例如 -l key1=value1,key2=value2)。符合的物件必須滿足所有指定的標籤約束。

--skip-wait-for-delete-timeout int

如果 Pod DeletionTimestamp 早於 N 秒,則略過等待 Pod。秒數必須大於 0 才能略過。

--timeout duration

放棄前等待的時間長度,零表示無限

--as string

要模擬操作的使用者名稱。使用者可以是命名空間中的一般使用者或服務帳戶。

--as-group strings

要模擬操作的群組,可以重複此旗標以指定多個群組。

--as-uid string

要模擬操作的 UID。

--cache-dir string     預設值:「$HOME/.kube/cache」

預設快取目錄

--certificate-authority string

憑證授權單位的憑證檔案路徑

--client-certificate string

TLS 的用戶端憑證檔案路徑

--client-key string

TLS 的用戶端金鑰檔案路徑

--cluster string

要使用的 kubeconfig 叢集名稱

--context string

要使用的 kubeconfig 環境名稱

--default-not-ready-toleration-seconds int     預設值:300

表示預設新增至每個尚未具有此容忍度的 Pod 的 notReady:NoExecute 容忍度的 tolerationSeconds。

--default-unreachable-toleration-seconds int     預設值:300

表示預設新增至每個尚未具有此容忍度的 Pod 的 unreachable:NoExecute 容忍度的 tolerationSeconds。

--disable-compression

如果為 true,則退出伺服器所有請求的回應壓縮

--insecure-skip-tls-verify

如果為 true,則不會檢查伺服器憑證的有效性。這會使您的 HTTPS 連線不安全

--kubeconfig string

使用 CLI 請求的 kubeconfig 檔案路徑。

--match-server-version

要求伺服器版本與客戶端版本相符

-n, --namespace string

如果存在,則為此 CLI 請求的命名空間範圍

--password string

API 伺服器的基本身份驗證密碼

--profile string     預設值:"none"

要擷取的設定檔名稱。選項包括 (none|cpu|heap|goroutine|threadcreate|block|mutex)

--profile-output string     預設值:"profile.pprof"

要將設定檔寫入的檔案名稱

--request-timeout string     預設值:"0"

在放棄單一伺服器請求之前等待的時間長度。非零值應包含對應的時間單位 (例如 1 秒、2 分、3 小時)。值為零表示請求永不逾時。

-s, --server string

Kubernetes API 伺服器的位址和埠號

--storage-driver-buffer-duration duration     預設值:"1m0s"

儲存驅動程式中的寫入操作將在此持續時間內緩衝,並作為單一交易提交到非記憶體後端

--storage-driver-db string     預設值:"cadvisor"

資料庫名稱

--storage-driver-host string     預設值:"localhost:8086"

資料庫主機:埠號

--storage-driver-password string     預設值:"root"

資料庫密碼

--storage-driver-secure

使用與資料庫的安全連線

--storage-driver-table string     預設值:"stats"

表格名稱

--storage-driver-user string     預設值:"root"

資料庫使用者名稱

--tls-server-name string

用於伺服器憑證驗證的伺服器名稱。如果未提供,則使用用於連線伺服器的主機名稱

--token string

用於 API 伺服器身份驗證的 Bearer 權杖

--user string

要使用的 kubeconfig 使用者名稱

--username string

API 伺服器的基本身份驗證使用者名稱

--version version[=true]

--version, --version=raw 印出版本資訊並結束;--version=vX.Y.Z... 設定回報的版本

--warnings-as-errors

將從伺服器收到的警告視為錯誤,並以非零的結束代碼退出

參見

  • kubectl - kubectl 控制 Kubernetes 叢集管理器

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。修正可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2024 年 8 月 19 日下午 5:14 PST:更新 v1.31 的 kubectl 參考文件 (59df28c340)