この記事は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/ |
<<: 製造、小売、医療の事例から:エッジコンピューティングと人工知能が収益向上にどのように役立つか
>>: エッジコンピューティングとは何ですか?なぜそれがモノのインターネットの発展にとって避けられない選択なのでしょうか?
現在、インターネットの継続的な発展に伴い、電子商取引業界は急速に発展しています。市場にはさまざまなユ...
PaaS(Platform-as-a- Service )とは、アプリケーションサービスの運用・開...
[[442453]] 1. 専用回線市場の現状専用線市場は、企業数、クラウド事業展開、政策支援などの...
アンカー テキスト (一般にアンカー テキスト リンクとも呼ばれます) もリンクの一種です。ハイパー...
すべてのウェブサイトは、ウェブサイトのプロモーションと外部リンクの構築という問題に直面しています。外...
1. 最適化ガイダンス私たちは、留学生のニーズとウェブサイトのユーザーエクスペリエンスを指針として、...
前提条件 すでに Kubernetes クラスターがあり、それにアクセスできます。 kubectl ...
[51CTO.comよりオリジナル記事] Baiduは長年にわたりスマートシティ建設の推進に努めてき...
オンラインマーケティングのプロモーションにはさまざまな方法がありますが、そのうちの1つはあまり使用さ...
最も一般的なクラウド オペレーティング システムである Linux は、デジタル インフラストラクチ...
分散システムでは、強力な一貫性を実現するのは簡単ではありません。 2PC ステージと 3PC ステー...
2009年に卒業してインターネットを使い始めてから、SEOについて最も多く耳にしてきました。過去3年...
1月22日、テンセントクラウドの「本物の音楽ライブラリへの直接アクセス」が単一製品の発売を発表した。...
[概要] 今後、中国では初めての海外旅行に出かける人がますます増えるでしょう。これらの人々はAirb...
Google、誠実な商人認定プロジェクトを開始新浪科技報北京時間6月8日朝のニュースによると、グーグ...