アプリケーションの健全性と信頼性を確実なものにするため、
プローブを理解して 確認する
こんにちは、Kubernetes コミュニティの皆さん! Kubernetes のプローブは、ポッド内のコンテナーのステータスを判断するために使用される診断ツールです。これらは、Kubernetes が実行中のコンテナーの健全性に基づいてコンテナー管理に関する意思決定を行うのに役立ちます。これらは、Kubernetes でアプリケーションをスムーズに動作させる上で重要な役割を果たします。アプリケーションの特定のニーズに従ってこれらのプローブを正しく構成すると、Kubernetes 環境の安定性と信頼性が向上します。これらのプローブがなぜそれほど重要なのかを説明しましょう。
Kubernetes のプローブの重要な側面
それらの利点を探ってみましょう。
- 稼働時間と信頼性の向上: プローブは、異常なポッドを迅速に再起動することで、アプリケーションが常に利用可能で応答性が高いことを保証します。
- リソース使用率の向上: トラフィックが準備ができていないポッドに到達するのを防ぐことで、プローブは正常なポッドのためにリソースを解放し、クラスターのパフォーマンスを最適化します。
- より高速なスケーリング: Kubernetes は、正確な正常性情報を利用して、実際の需要に基づいてアプリケーションをスケールアップまたはスケールダウンするかどうか、情報に基づいた決定を下すことができます。
- 簡略化されたトラブルシューティング: プローブはアプリケーションの状態に関する貴重な洞察を提供し、問題の診断と修正を容易にします。
プローブの種類
- 活性プローブ: コンテナが適切に実行されているかどうかを判断します。 liveness プローブが失敗した場合、Kubernetes はコンテナーを再起動します。
- レディネスプローブ: コンテナがリクエストを処理する準備ができているかどうかを確認します。 readiness プローブが失敗した場合、Kubernetes は通過するまでポッドへのトラフィックのルーティングを停止します。
- 起動プローブ: 起動に時間がかかるコンテナに使用されます。起動プローブが構成されている場合、活性チェックと準備完了チェックは成功するまで無効になり、アプリケーションの起動に十分な時間が確保されます。
ピーク時に賑わうレストランを想像して、例を使用してプローブを見てみましょう。
1. Readiness Probe – 管理者 D のチェックリスト
- 管理者が、レストランにおける準備状況のチェック係であると考えてください。彼らの仕事は、ゲストを着席させる前に、テーブルが清潔で準備が整っていることを確認することです。これは、コンテナ内のアプリケーション (厨房と考えてください) が受信トラフィックを処理する準備が完全に整っているかどうかを確認することを意味します。
- プローブには次の 1 つ以上が含まれる可能性があります。
- Web サーバーが正しいポートをリッスンしているかどうかの確認
- データベース接続のテスト
- 主要なサービスが稼働していることの確認
- これらのチェックのいずれかが失敗した場合、管理者はホスト (Kubernetes) にテーブルの準備ができていない (アプリケーションの準備ができていない) ことを通知します。その後、ホストはテーブルが準備されるまで新しい顧客 (トラフィック) の送信を遅らせます。これにより、不満を抱いたダイナー(満足していないユーザー)が不完全または遅いサービスを受けることを防ぎます。
2. Liveness Probe – キッチンマネージャーのパトロール
- キッチンマネージャーをLivenessプローブと考えてください。彼らは常にキッチンの周りを歩き回り、すべてがスムーズに進んでいることと、食品が安全に準備されていることを確認します。
- これは、コンテナ内のアプリケーションがまだ生きていて、適切に機能しているかどうかを確認することになります。
- プローブには次の 1 つ以上が含まれる可能性があります。
- 実行中のプロセスの健全性をテストする
- リソース使用率の監視 (CPU、メモリ)
- エラーやクラッシュのチェック
- マネージャーが問題を発見すると、キッチンに問題 (アプリケーションのクラッシュ) が発生していることをスタッフ (Kubernetes) に警告します。次に、スタッフはコンテナを再起動 (アプリケーションを再起動) して、作業を軌道に戻します。これにより、ダイナー (ユーザー) は閉じたキッチン (応答しないアプリケーション) に遭遇することがなくなります。
3. スタートアッププローブ – シェフのウォームアップタイム
- オーブンを予熱するシェフを起動プローブとして考えてください。注文を受ける前にキッチンを適切に暖めるには時間がかかります。
- これは、コンテナ内のアプリケーションにトラフィックの処理を期待する前に、サービスの初期化と起動に十分な時間を与えることを意味します。
- プローブには次の 1 つ以上が含まれる可能性があります。
- 特定のアプリケーションプロセスがアクティブになるのを待っています
- データベース接続の確立が成功したかどうかの確認
- 初期セットアップ後のリソースの可用性の確認
- 予熱 (始動) が完了した後にのみ、キッチンは注文を受け付けます (トラフィックはコンテナーにルーティングされます)。これにより、準備が途中のキッチンにリクエストが送信される (アプリケーションの応答が遅い、または不完全) ことが回避されます。
これら 3 つのプローブをレストランの専属スタッフのように使用することで、Kubernetes のアプリケーションが常にユーザーにおいしいエクスペリエンスを提供できるようにすることができ、不完全なサービスや利用できないサービスによる消化不良 (フラストレーション) を回避できます。
追加の考慮事項
- プローブは、YAML ファイルやアノテーションなどのさまざまな方法を使用して構成できます。
- アプリケーションのニーズに合わせて、さまざまなタイプのプローブ (HTTP、exec、TCP) を使用できます。
- 障害のしきい値や間隔などのパラメーターを設定することで、プローブの動作を微調整できます。
プローブの技術を習得することで、Kubernetes の賑やかな王国内で成功する、回復力と信頼性の高いアプリケーションを構築できます。
このブログ投稿によって、Kubernetes におけるプローブの役割が明確になり、アプリケーションをシームレスに使用するためにプローブを活用できるようになることを願っています。
・ Kubernetesを理解する シリーズ こちら の最初の部分を読んでください。特定のユースケース、技術的な実装の詳細、Kubernetes を活用するためのベスト プラクティスをさらに深く掘り下げた今後の投稿にご期待ください。
Kubernetes スキルセットを向上させましょう — 今すぐ登録してください!
ライブ、インストラクター主導 開発者向け Kubernetes (LFD459)
をチェックするか、
自分のペースで進められる e ラーニング Kubernetes for Developers (LFD259)
著者: ファズルール・ラーマン・カーン
CKA、CKS、CKAD、KCNA
Linux Foundation テクニカル トレーナー