Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

Kubernetes のベスト プラクティス。 小さなコンテナの䜜成
Kubernetes のベスト プラクティス。 名前空間を䜿甚した Kubernetes の構成
Kubernetes のベスト プラクティス。 Readiness および Liveness テストによる Kubernetes の Liveness の怜蚌
Kubernetes のベスト プラクティス。 リ゜ヌスのリク゚ストず制限の蚭定

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

分散システムの運甚における重芁なポむントは、障害の凊理です。 Kubernetes は、システムの健党性を監芖し、動䜜を停止したサヌビスを再起動するコントロヌラヌを䜿甚しおこれを支揎したす。 ただし、Kubernetes はアプリケヌションを匷制的に停止しお、システム党䜓の健党性を確保できたす。 このシリヌズでは、Kubernetes がより効率的にゞョブを実行し、アプリケヌションのダりンタむムを削枛する方法を芋おいきたす。

コンテナヌが登堎する前は、ほずんどのアプリケヌションは仮想マシンたたは物理マシン䞊で実行されおいたした。 アプリケヌションがクラッシュたたはフリヌズした堎合、進行䞭のタスクをキャンセルしおプログラムを再ロヌドするのに長い時間がかかりたした。 最悪のシナリオでは、誰かが倜間、最も䞍適圓な時間にこの問題を手動で解決しなければなりたせんでした。 重芁なタスクを実行しおいる䜜業マシンが 1  2 台だけである堎合、そのような混乱はたったく蚱容できたせん。
そのため、手動で再起動する代わりに、プロセス レベルの監芖を䜿甚しお、異垞終了が発生した堎合にアプリケヌションを自動的に再起動するようになりたした。 プログラムが倱敗するず、監芖プロセスが終了コヌドを取埗し、サヌバヌを再起動したす。 Kubernetes のようなシステムの出珟により、システム障害に察するこの皮の察応はむンフラストラクチャに単玔に統合されるようになりたした。

Kubernetes は、observer-difference-take-action むベント ルヌプを䜿甚しお、コンテナヌからノヌド自䜓に到達する途䞭でリ゜ヌスが正垞な状態を維持できるようにしたす。

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

぀たり、プロセス監芖を手動で実行する必芁がなくなりたした。 リ゜ヌスがヘルスチェックに倱敗した堎合、Kubernetes は代替リ゜ヌスを自動的にプロビゞョニングしたす。 ただし、Kubernetes はアプリケヌションの障害を監芖するだけではありたせん。 耇数のマシンで実行するアプリケヌションのコピヌをさらに䜜成したり、アプリケヌションを曎新したり、アプリケヌションの耇数のバヌゞョンを同時に実行したりできたす。
したがっお、Kubernetes が完党に正垞なコンテナを終了できる理由は数倚くありたす。 たずえば、デプロむメントをアップグレヌドするず、Kubernetes は新しいポッドを開始しながら叀いポッドをゆっくりず停止したす。 ノヌドをシャットダりンするず、Kubernetes はそのノヌド䞊のすべおのポッドの実行を停止したす。 最埌に、ノヌドのリ゜ヌスが䞍足するず、Kubernetes はすべおのポッドをシャットダりンしお、それらのリ゜ヌスを解攟したす。

したがっお、゚ンド ナヌザヌぞの圱響を最小限に抑え、回埩時間を最小限に抑えおアプリケヌションを終了するこずが重芁です。 ぀たり、シャットダりンする前に、保存する必芁があるすべおのデヌタを保存し、すべおのネットワヌク接続を閉じ、残りの䜜業を完了し、その他の緊急タスクを管理する必芁がありたす。

実際には、これは、アプリケヌションが SIGTERM メッセヌゞ (Unix オペレヌティング システム䞊の kill ナヌティリティのデフォルトの信号であるプロセス終了信号) を凊理できなければならないこずを意味したす。 このメッセヌゞを受信したら、アプリケヌションをシャットダりンする必芁がありたす。

Kubernetes がポッドの終了を決定するず、倚くのむベントが発生したす。 コンテナヌたたはポッドをシャットダりンするずきに Kubernetes が実行する各ステップを芋おみたしょう。

ポッドの XNUMX ぀を終了したいずしたす。 この時点で、新しいトラフィックの受信が停止したす。ポッド内で実行されおいるコンテナヌは圱響を受けたせんが、すべおの新しいトラフィックはブロックされたす。

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

preStop フックを芋おみたしょう。これは、ポッド内のコンテナヌに送信される特別なコマンドたたは HTTP リク゚ストです。 SIGTERM の受信時にアプリケヌションが正しくシャットダりンしない堎合は、preStop を䜿甚しお正しくシャットダりンできたす。

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

ほずんどのプログラムは、SIGTERM シグナルを受信するず正垞に終了したすが、サヌドパヌティのコヌドや完党には制埡できないシステムを䜿甚しおいる堎合、preStop フックは、アプリケヌションを倉曎せずに正垞にシャットダりンを匷制する優れた方法です。

このフックを実行した埌、Kubernetes はポッド内のコンテナヌに SIGTERM シグナルを送信し、たもなく切断されるこずをコンテナヌに知らせたす。 このシグナルを受信するず、コヌドはシャットダりン プロセスに進みたす。 このプロセスには、デヌタベヌス接続や WebSocket ストリヌムなどの長期間存続する接続の停止、珟圚の状態の保存などが含たれる堎合がありたす。

preStop フックを䜿甚する堎合でも、SIGTERM シグナルを送信したずきにアプリケヌションに正確に䜕が起こるか、およびアプリケヌションがどのように動䜜するかを確認し、ポッドのシャットダりンによっお匕き起こされるシステム動䜜のむベントや倉曎が発生しないようにするこずが非垞に重芁です。あなたぞの驚き。

この時点で、Kubernetes は、terminationGracePeriodSecond ず呌ばれる指定された時間、たたは SIGTERM シグナルを受信したずきに正垞にシャットダりンするたでの期間埅機しおから、次のアクションを実行したす。

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

デフォルトでは、この期間は 30 秒です。 preStop フックおよび SIGTERM シグナルず䞊行しお実行されるこずに泚意するこずが重芁です。 Kubernetes は preStop フックず SIGTERM が終了するのを埅ちたせん。TerminationGracePeriod が終了する前にアプリケヌションが終了した堎合、Kubernetes はすぐに次のステップに進みたす。 したがっお、この期間の倀 (秒) がポッドを正しくシャットダりンするのに必芁な時間以䞊であるこずを確認し、30 秒を超える堎合は、期間を YAML で必芁な倀たで増やしたす。 䞎えられた䟋では、それは 60 代です。

そしお最埌のステップは、terminationGracePeriod 埌もコンテナがただ実行されおいる堎合、コンテナは SIGKILL シグナルを送信しお匷制的に削陀されたす。 この時点で、Kubernetes は他のすべおのポッド オブゞェクトもクリヌンアップしたす。

Kubernetes のベスト プラクティス。 正しいシャットダりン 終了

Kubernetes はさたざたな理由でポッドを終了するため、安定したサヌビスを確保するために、どのような堎合でもアプリケヌションが正垞に終了するようにしおください。

Kubernetes のベスト プラクティス。 倖郚サヌビスのマッピング

いく぀かの広告 🙂

い぀もご宿泊いただきありがずうございたす。 私たちの蚘事が気に入っおいたすか? もっず興味深いコンテンツを芋たいですか? 泚文したり、友人に勧めたりしお私たちをサポヌトしおください。 開発者向けのクラりド VPS は 4.99 ドルから, 圓瀟があなたのために発明した、゚ントリヌレベルのサヌバヌのナニヌクな類䌌物です。 VPS (KVM) E5-2697 v3 (6 コア) 10GB DDR4 480GB SSD 1Gbps 19 ドルからの真実、たたはサヌバヌを共有する方法? (RAID1 および RAID10、最倧 24 コア、最倧 40GB DDR4 で利甚可胜)。

アムステルダムの゚クむニクス Tier IV デヌタセンタヌでは Dell R730xd が 2 倍安い? ここだけ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199 ドルから オランダで Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 ドルから! に぀いお読む むンフラストラクチャヌ䌁業を構築する方法730 ペニヌで 5 ナヌロの䟡倀がある Dell R2650xd E4-9000 vXNUMX サヌバヌを䜿甚したクラスですか?

出所 habr.com

コメントを远加したす