您好,登錄后才能下訂單哦!
K8S delete node 運維的示例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
kubelet v1.16 源碼
目前版本的k8s node 由controller-manager 中的NodeLifecycleController控制,
該版本,不會默認開啟TaintBasedEvictions feature, 去對not ready的node進行 NoExecute 污點和容忍的處理。可通過以下命令確認。 grep -r "Controller is using taint based evictions." kube-controller-manager.INFO
而NodeLifecycleController 對node的Delete 事件,并沒有相應的handler進行處理。而是通過ZonePodEvictor 的map結構體去記錄哪些超時的節點上的pod需要被主動刪除。
--node-monitor-grace-period duration Default: 40s // workers that evicts pods from unresponsive nodes. zonePodEvictor map[string]*scheduler.RateLimitedTimedQueue controller會起一個goroutine 每隔NodeEvictionPeriod 時間間隔100ms, doEvictionPass的操作對每個ZonePodEvictor隊列 中存儲的node節點上的pod進行刪除。 doEvictionPass() -> nodeutil.DeletePods() -> kubeClient.CoreV1().Pods(pod.Namespace).Delete(pod.Name, nil)
node controller 通過monitorNodeStatus goroutine進行node狀態監控。
通過把本地informer的node數據 和etcd中的比較,把node節點分為幾類(added, deleted,newZoneRepresentatives),觀測到node存在added,deleted列表,但獲取zone狀態為空時,加入newZoneRepresentatives列表,確認后會把node加入ZonePodEvictor隊列 。
kubectl delete node 是一個危險的操作,執行后觸發節點上所有pod的evict驅逐。請一定謹慎。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。