Kubernetes ReplicaSet 終了戦略

Kubernetes ReplicaSet 終了戦略

KubernetesはレプリカセットのカウントダウンでTERM信号を使用します。
これは私のアプリケーションにとって非常に危険です。
私はアプリケーションサーバーをシャットダウンするために独自のシャットダウンメカニズムを持つTomcatアプリケーションサーバーを使用します。
オペレーティングシステム(Linux)信号(9、15、...)をjvmに送信すると、JVMはjvm内のスレッドで何をすべきかわからないため、スレッドが正常に完了する前に終了します。

Request -----> BackEnd API -----> [Process] -----> Response
                                      ^   
                   Send TERM (Signal) while thread doing Process

Kubernetesコンテナ終了メカニズムを変更する方法はありますか?
私はCubernetesが以下を使用したいと思います:

catalina.sh stop

ベストアンサー1

これを達成する1つの方法はdumb-initを使用することです。

dumb-initは、ゾンビのような問題に対処するためにコンテナを構築するときにしばしば良い方法です。あなたの場合は、信号を再マッピングすることもできます。

Dockerfileには次の内容があります。

CMD ["dumb-init", "--rewrite", "15:28", "/app/start.sh"]

確認後、kill -lそのSIGINT番号でなければなりません15

その後、起動スクリプトから信号をキャプチャSIGWINCH()できます。28

#!/bin/sh

trap "cd /app ; catalina.sh stop" SIGWINCH

[your startup script]
exec $JAVA_HOME/bin/java ...

編集してみると、別の答えが受け入れられるのがわかります。もちろん、コンテナライフサイクルフックは素晴らしいようです。

まず、この機能は約1年間提供されました。クラスタのバージョンによっては使用できない場合があります。

その後、問題になる可能性があるAPIベースのシャットダウンでのみ実行されることがわかります。

おすすめ記事