問題タブ [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.
ruby-on-rails - Kubernetes readinessProbe が「接続拒否」を返す
私の環境は、Ruby on Rails、Vue.js、Webpacker、および Kubernetes です。
K8s のデプロイに healthcheck 用の readinessProbe を追加しましたが、ポッドの開始準備ができていないため、次のコマンドでログを確認しました。
すると以下のようなメッセージを受け取ることができました
ただし、ローカルホストでこのルートを使用して確認すると、エラーは発生せず、HTTP ステータスは 200 です。
K8sポッドで。
Ingress で UNHEALTHY ステータスを取得したため、readinessProbe ヘルス チェックを行いました。
ここに私のYAMLファイルがあります:
mysql.yaml:
webpacker.yaml
rails.yaml:
kubectl describe po <pod_name> -n <namespace>
:
kubernetes - liveness/readiness プローブはポッドとどのように通信しますか?
私はk8sに非常に慣れていないので、質問が意味をなさないか、間違っている/愚かである場合はお詫びします。
ポッド定義用に構成された liveness プローブがあります。これは、ヘルス API をヒットし、応答ステータスをチェックして、ポッドの liveness をテストします。
私の質問は、活性/準備プローブの目的を理解していますが、正確には何ですか? それらは、構成された API を介してポッドと通信しようとする別のタイプのポッドですか? それとも、ポッド自体の内部で実行され、API 呼び出しを試行するある種の軽量プロセスですか?
また、プローブはポッドとどのように通信しますか? プローブが API にアクセスできるように、ポッド用にサービスを構成する必要がありますか? それとも、追加の構成を必要としない内部プロセスですか?
kubernetes - マルチテナント システムの Kubernetes Readiness Probe
複数のテナントに対して 1 つの kubernetes を展開するシステムを設計していますが、顧客ごとに複数のデータベース、キューなどがあります。状態のないものはすべて共有され、状態のあるものはテナントごとに分けられます。要求ホスト (tenant1.company.com または tenant2.company.com) に基づいて、コードは対応するデータベースとキューに接続します。
ポッドが複数のテナントで動作するように設計されている場合、readiness プローブはどのように設計する必要がありますか?
次のオプションを考えることができますが、どれも正しくないようです。
- すべてのデータベースとキューに接続し、準備ができているかどうかを確認します。 欠点: これにより、1 つのリソースがダウンしてもポッドの準備ができていません。
- 任意の 1 つのデータベースとキューに接続します。 欠点: すべてのプローブの準備状況を実際にチェックするわけではありません。
- 準備プローブはまったくありません。
複数のテナントをサポートするためにリソース レベルで分離する場合 (これは B2B マルチテナントであり、新しいテナントをオンボードするには時間と労力がかかります)、Kubernetes デプロイ レベルでも分離する必要があるように感じます。
これは標準的なアプローチですか? すべてのレベルで完全に分離するか、同じ共有リソースを持つ 1 つの統合システムを使用しますか? そうでない場合、readiness プローブはどのように設計すればよいですか?