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 專案的其他地方進行。