Pod 關閉流程

翻譯自官方文檔

  1. 用戶發送delete pod命令,grace period 參數即寬限期(假設爲30秒)
  2. API Server 更新 pod 的寬限期字段
  3. 執行pod get 命令顯示pod狀態變爲Terminating
  4. 與3同時,kubelet看到pod被標識了deleteTimestamp也就是標識爲Terminating,它開始執行關閉pod流程:
    1. 如果pod中的一個容器定義了 preStop hook,就在容器中調用它。如果過了寬限期preStop還在運行,步驟2一次性延長一個短的寬限期(2秒)。如果要延長preStop,你要修改terminationGracePeriodSeconds
    2. 向容器發送TERM信號。不是pod內的所有容器同時收到TERM信號並且如果它們關閉的順序很重要,則每個容器都可能需要preStop hook
  5. 與3同時,pod 從 service的endpoints列表中移除,不再被視爲副本控制器正在運行的Pod集合的一部分。緩慢關閉的Pod無法繼續爲流量提供服務,因爲負載均衡器(如服務代理)會將其從輪換中刪除。
  6. 寬限期過期時,pod中所有運行的進程被SIGKILL殺死
  7. kubelet設置API Server的寬限期爲0(立即刪除)來結束pod的刪除流程。pod從API消失,客戶端不可見。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章