この記事は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/ |
<<: 製造、小売、医療の事例から:エッジコンピューティングと人工知能が収益向上にどのように役立つか
>>: エッジコンピューティングとは何ですか?なぜそれがモノのインターネットの発展にとって避けられない選択なのでしょうか?
TIOBE は 2014 年 4 月のプログラミング言語ランキングを発表しました。上位 3 位は C...
このメールの中で、 rackhost.co は、10Gbps のアクセス、ユーザーあたり 1Gbps...
今日の市場では、製品が売れなくなるとすぐに、ほとんどの企業はその製品が競争力を失ったとみなし、急いで...
今週はキーワードの問題に焦点を当てます。突然、私はこのような重要な問題がこれまで議論されたことがない...
JD.comは最近目立たず、大きな動きもしていないようだ。劉強東氏も微博ではほとんどコメントしていな...
[51CTO.com からのオリジナル記事] 最近、SAP Cloud Conference が上海...
多くのウェブマスターはウェブサイトのアーキテクチャの最適化について混乱しており、どのように始めればよ...
2009 年に設立されたオーストラリアの VPS 販売業者である CrownCloud は、8 コア...
8月にBaiduが行った大規模なアップデートにより、多くのウェブマスターは外部リンクの構築がますます...
この記事では、AWS、Azure、Google Cloud が提供するクラウド セキュリティ ガイド...
1. はじめにHBase は分散型の列指向のオープンソース データベースです。一般的なリレーショナル...
中国国内の大手データセンター、コンテンツ配信ネットワーク、ハイブリッドクラウド、ハイブリッドITサー...
最近、検索業界で最も人気のあるニュースは、360 SearchとBaiduの間のいわゆる「3B」戦争...
1. 見出しか「盗まれた」見出しか?今日頭条は集団著作権保護を受ける可能性がある一夜にして著作権紛争...
長年SEOに携わってきた人なら、ユーザーの言葉にとても敏感になっているはずです。では、ユーザーはラン...