成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes實踐之優雅終止

云計算
Pod 銷毀時,會停止容器內的進程,通常在停止的過程中我們需要執行一些善后邏輯,比如等待存量請求處理完以避免連接中斷,或通知相關依賴進行清理等,從而實現優雅終止目的。本文介紹在 Kubernetes 場景下,實現容器優雅終止的最佳實踐。

[[403677]]

本文轉載自微信公眾號「云原生知識宇宙」,作者I am roc。轉載本文請聯系云原生知識宇宙公眾號。

概述

Pod 銷毀時,會停止容器內的進程,通常在停止的過程中我們需要執行一些善后邏輯,比如等待存量請求處理完以避免連接中斷,或通知相關依賴進行清理等,從而實現優雅終止目的。本文介紹在 Kubernetes 場景下,實現容器優雅終止的最佳實踐。

容器終止流程

我們先了解下容器在 Kubernetes 環境中的終止流程:

  1. Pod 被刪除,狀態置為 Terminating。
  2. kube-proxy 更新轉發規則,將 Pod 從 service 的 endpoint 列表中摘除掉,新的流量不再轉發到該 Pod。
  3. 如果 Pod 配置了 preStop Hook ,將會執行。
  4. kubelet 對 Pod 中各個 container 發送 SIGTERM 信號以通知容器進程開始優雅停止。
  5. 等待容器進程完全停止,如果在 terminationGracePeriodSeconds 內 (默認 30s) 還未完全停止,就發送 SIGKILL 信號強制殺死進程。
  6. 所有容器進程終止,清理 Pod 資源。

業務代碼處理 SIGTERM 信號

要實現優雅終止,務必在業務代碼里面處理下 SIGTERM 信號,參考 處理 SIGTERM 代碼示例 ) 。

別讓 shell 導致收不到 SIGTERM 信號

如果容器啟動入口使用了腳本 (如 CMD ["/start.sh"]),業務進程就成了 shell 的子進程,在 Pod 停止時業務進程可能收不到 SIGTERM 信號,因為 shell 不會自動傳遞信號給子進程。更詳細解釋請參考 為什么我的容器收不到 SIGTERM 信號 ?

如果解決?請參考 在 SHELL 中傳遞信號。

合理使用 preStop Hook

若你的業務代碼中沒有處理 SIGTERM 信號,或者你無法控制使用的第三方庫或系統來增加優雅終止的邏輯,也可以嘗試為 Pod 配置下 preStop,在這里面實現優雅終止的邏輯,示例:

  1. lifecycle: 
  2.         preStop: 
  3.           exec
  4.             command: 
  5.             - /clean.sh 

參考 Kubernetes API 文檔

在某些極端情況下,Pod 被刪除的一小段時間內,仍然可能有新連接被轉發過來,因為 kubelet 與 kube-proxy 同時 watch 到 pod 被刪除,kubelet 有可能在 kube-proxy 同步完規則前就已經停止容器了,這時可能導致一些新的連接被轉發到正在刪除的 Pod,而通常情況下,當應用受到 SIGTERM 后都不再接受新連接,只保持存量連接繼續處理,所以就可能導致 Pod 刪除的瞬間部分請求失敗。

這種情況下,我們也可以利用 preStop 先 sleep 一小下,等待 kube-proxy 完成規則同步再開始停止容器內進程:

  1. lifecycle: 
  2.           preStop: 
  3.             exec
  4.               command: 
  5.               - sleep 
  6.               - 5s 

調整優雅時長

如果需要的優雅終止時間比較長 (preStop + 業務進程停止可能超過 30s),可根據實際情況自定義 terminationGracePeriodSeconds,避免過早的被 SIGKILL 殺死,示例:

參考資料

處理 SIGTERM 代碼示例: https://imroc.cc/k8s/ref/code-example-of-handle-sigterm/

為什么我的容器收不到 SIGTERM 信號: https://imroc.cc/k8s/faq/why-cannot-receive-sigterm/

在 SHELL 中傳遞信號: https://imroc.cc/k8s/trick/propagating-signals-in-shell/

 

責任編輯:武曉燕 來源: 云原生知識宇宙
相關推薦

2021-03-11 14:33:28

Kubernetes開源容器

2021-06-03 08:32:52

KubernetesRBACRole

2021-03-12 07:47:44

KubernetesRedis-clustRedis

2023-10-19 19:42:25

IstioPodkubernetes

2021-10-26 10:28:41

開發架構Kubernetes

2025-01-13 06:00:00

Go語言gRPC

2023-05-12 14:14:00

Java線程中斷

2022-09-01 08:50:22

kubernetes容器

2024-09-03 16:28:20

2021-12-29 17:24:16

Kubernetes集群事件

2021-06-25 15:53:25

Kubernetes程序技巧

2015-07-17 10:25:43

kubernetesDocker集群系統

2021-06-08 10:26:10

云計算云計算產業云應用

2019-08-09 10:58:48

2020-09-25 08:00:57

Kubernetes

2023-11-07 07:08:57

2018-12-16 16:21:08

HadoopKubernetes容器

2019-08-16 11:48:53

容器云平臺軟件

2022-01-27 08:27:23

Dubbo上下線設計

2023-03-27 08:41:59

Java并發編程中斷線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩综合 | 久久精品成人热国产成 | 自拍偷拍第一页 | 在线观看h视频 | 亚洲h色| 黄色在线免费观看 | 一区在线视频 | 国产在线观看不卡一区二区三区 | 一区二区三区免费 | 国产精品免费一区二区 | 日韩欧美一级片 | 午夜电影网 | 九一国产精品 | 婷婷去俺也去 | www久久国产 | 91影视| 日韩精品久久久久 | 欧美激情国产日韩精品一区18 | 亚洲网在线 | 日本免费视频在线观看 | 日本在线免费视频 | 中文字幕日韩一区 | 日韩免费成人av | 免费在线一区二区三区 | 国产成人精品午夜视频免费 | 一级免费视频 | 国产女人与拘做受免费视频 | 综合九九 | 久久久成人免费视频 | 日韩aⅴ视频| 国产综合久久 | a免费在线| 在线国产小视频 | 成人av一区 | 成人综合一区 | 成人日韩| 久久一区二 | 亚洲精品久久久一区二区三区 | 九九热最新地址 | 亚洲香蕉在线视频 | 欧美黄色录像 |