この記事はWeChatのパブリックアカウント「Cloud Native Knowledge Universe」から転載したもので、著者はI am rocです。この記事を転載する場合は、Cloud Native Knowledge Universe の公開アカウントにお問い合わせください。 概要Pod が破棄されると、コンテナ内のプロセスは停止されます。通常、停止プロセス中に、接続の中断を避けるために既存のリクエストが処理されるのを待ったり、関連する依存関係をクリーンアップするように通知したりするなど、何らかの後処理ロジックを実行して、正常な終了の目的を達成する必要があります。この記事では、Kubernetes シナリオでコンテナの正常な終了を実装するためのベスト プラクティスを紹介します。 コンテナ終了プロセスまず、Kubernetes 環境でのコンテナの終了プロセスを理解しましょう。
ビジネス コードは SIGTERM シグナルを処理します正常な終了を実現するには、ビジネス コードで SIGTERM シグナルを必ず処理してください (SIGTERM 処理コードの例を参照)。 シェルがSIGTERMシグナルの受信を妨げないようにしてくださいスクリプト (CMD ["/start.sh"] など) がコンテナの起動エントリとして使用される場合、ビジネス プロセスはシェルのサブプロセスになります。 Pod が停止すると、シェルがサブプロセスにシグナルを自動的に渡さないため、ビジネス プロセスは SIGTERM シグナルを受信しない可能性があります。より詳細な説明については、「コンテナーが SIGTERM シグナルを受信しないのはなぜですか?」を参照してください。 解決したら? SHELL でのシグナルの受け渡しを参照してください。 プレストップフックの適切な使用ビジネス コードが SIGTERM シグナルを処理しない場合、またはエレガントな終了ロジックを追加するために使用されるサードパーティのライブラリまたはシステムを制御できない場合は、Pod の preStop を構成して、その中にエレガントな終了ロジックを実装することもできます。例えば:
Kubernetes APIドキュメントを参照してください 極端なケースでは、ポッドが削除された後も、短期間で新しい接続が転送されることがあります。これは、kubelet と kube-proxy が同時にポッドの削除を監視するためです。 kubelet は、kube-proxy がルールを同期する前にコンテナを停止した可能性があります。この場合、いくつかの新しい接続が削除される Pod に転送される可能性があります。通常、アプリケーションが SIGTERM を受信すると、新しい接続を受け入れなくなり、既存の接続の処理のみを継続します。したがって、Pod が削除された瞬間に一部のリクエストが失敗する可能性があります。 この場合、preStop を使用してしばらくスリープし、kube-proxy がルールの同期を完了するまで待機してから、コンテナ内のプロセスの停止を開始することもできます。
猶予時間を調整する必要な正常終了時間が長い場合 (preStop + ビジネス プロセスの停止が 30 秒を超える可能性がある)、SIGKILL によって早期に強制終了されることを回避するために、実際の状況に応じて terminationGracePeriodSeconds をカスタマイズできます。例えば: 参考文献 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/ |
<<: 製造、小売、医療の事例から:エッジコンピューティングと人工知能が収益向上にどのように役立つか
>>: エッジコンピューティングとは何ですか?なぜそれがモノのインターネットの発展にとって避けられない選択なのでしょうか?
B2Cモールの発展過程において、初期の生存テストを通過し、一定の収益基盤を持つウェブサイトにとって、...
SEO を行う人なら誰でも「コンテンツは王様、外部リンクは女王」ということわざを知っていますが、この...
UI 作業を簡素化し、運用および保守担当者により柔軟なリソース クエリ方法を提供するために、ZSta...
BandwagonHost VPS の登録プロセスは比較的簡単です。登録できない方もいらっしゃるでし...
[51CTO.com クイック翻訳] 従来のクラウド サービスのシナリオでは、企業は特定の仮想マシン...
1. フォーラムのニックネームとアバターニックネームを設定する際は、覚えやすく意味があり、広告効果の...
SEO は誰もが知っている言葉です。誰もがよく口にする検索エンジン最適化、いわゆるコンテンツと外部リ...
中国国際放送、北京、3月7日(呉成波記者)Economic Voiceの「世界企業」の報道によると、...
コンテナ テクノロジーを採用すると、開発者の作業は楽になりますが、運用チームにとっては複雑になること...
Hostvds は 2009 年に設立されたロシアの企業です。主に OpenStack クラウド ア...
Tuan800の統計によると、レストランや映画のチケットは最も人気のあるグループ購入商品の一つです。...
ウェブマスターは誰でも、自分が運営するウェブサイトが大金を稼ぐことを望んでいます。最近では、趣味でウ...
【51CTO.com クイック翻訳】はじめにSnowflake、Panoply、Repods は、管...
SEMWATCHのデータが失われ、以前書いた記事もいくつか消えてしまいました。 Baidu スナップ...
01最近、ネット界で一番ホットな出来事は、小紅書が店頭から撤去されたことだ。 7月29日夕方、小紅書...