問題タブ [readinessprobe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - データベースとコンテナーでの pod readinessprobe の問題
kubernetes にデプロイされたアプリケーションがあります。これがtechstackです: Java 11、Spring Boot 2.3.xまたは2.5.x、hikari 3.xまたは4.xを使用
スプリング アクチュエータを使用してヘルスチェックを行います。application.yaml 内liveness
の構成は次のとおりです。readiness
DBがダウンした場合の動作 -
- 影響を受けないよう
liveness
にします。つまり、DB が停止しても、アプリケーション コンテナーは実行し続ける必要があります。 readinesss
トラフィックがコンテナーにヒットしないようにします。
liveness
およびreadiness
コンテナ仕様の構成:
アプリケーションが開始され、数時間正常に実行されます。
私がしたこと:
DBをダウンさせました。
指摘された問題:
DB がダウンしている場合、90 秒以上経過すると、さらに 3 つのポッドがスピンアップします。ポッドが記述されると、次のようなステータスと状態が表示されます。
実行中のすべてのポッドを一覧表示すると:
私の類推/発見:
構成ごとReadinessProbe
:periodSeconds
は 30 秒に設定され、failurethreshold
k8s ドキュメントごとにデフォルトで 3 に設定されています。
application.yaml ごとreadiness
に db チェックが含まれています。これは、30 秒ごとにreadiness
チェックが失敗したことを意味します。3回失敗すると、failurethreshold
満たされ、新しいポッドがスピンアップします。
再起動ポリシーは、デフォルトで Always に設定されています。
質問:
- なぜ新しいポッドを回転させたのですか?
- 1 つ、2 つ、4 つ、または任意の数ではなく、具体的に 3 つのポッドのみを回転させたのはなぜですか?
- これは何か関係があり
restartpolicy
ますか?
kubernetes - readinessProbes でコマンドまたは引数を使用する必要がある場合
CKAD の killer.sh. を調べています。readiness プローブの下にコマンド フィールドがある Pod 定義ファイルが見つかりました。コンテナーは別のコマンドを実行しますが、args を使用します。
readiness プローブが使用されず、この Pod が暗黙的に作成された場合、args は使用されません。
kubectl run pod6 --image=busybox:1.31.0 --dry-run=client --command -- sh -c "touch /tmp/ready && sleep 1d" > 6.yaml
出力 YAML は次のようになります。
readinessProbe とコンテナーの両方でコマンドが使用されないのはなぜですか? コマンドはいつ引数になりますか? 伝える方法はありますか?
私はこのドキュメントを読みました: https://kubernetes.io/docs/tasks/inject-data-application/_print/ しかし、この状況といつ引数に切り替えるかを理解することはまだあまりうまくいきませんでした。