Kubernetes 内の各サービスの可用性を高めたい場合は、Pod のヘルスチェックが不可欠です。ポッドのライフサイクルとヘルスチェックは、私たちが最も頻繁に触れる基本的な知識です。基礎ではありますが、よく理解しておかないと、問題が起こったときに頭を悩ませたり、髪の毛を引っ張ったりしてしまいがちです。 この記事では、主にK8Sを使っているときに困ること、Podのライフサイクル、再起動戦略、ヘルスチェック、プローブの選択方法、実際の戦闘の6つの側面からPodのヘルスチェックを紹介し、最後にナレッジポイントのまとめとPodの問題のトラブルシューティングのまとめがあります。 1. K8Sと初めて出会ったときの恥ずかしいことKubernetesを使い始めた2019年を振り返ると、Podが起動できないという事態に遭遇し、途方に暮れていました。その後、いくつかのトラブルシューティング方法を徐々に習得し、この状況は緩和されました。 時間が経つにつれて、再び問題が発生しました。ある日、Springboot マイクロサービスをデプロイする際に、開発環境とテスト環境に何度もデプロイしましたが、正常に起動したのは数回だけで、ほとんどのデプロイは正常に起動しませんでした。ただし、実稼働環境は毎回正常にデプロイできます。当時、この問題は長い間私を悩ませていました。今考えてみると、かなり興味深いですね。 皆さんの多くはすでに答えを推測していると思います。はい、それは今日お話する健康診断に関係しています。 ポッドのライフサイクルヘルスチェックについて説明する前に、まず Pod のライフサイクルまたは Pod のステータスを確認しましょう。 Pod のライフサイクルは Pending 状態から始まります。 Pod 内の少なくとも 1 つのアプリケーション コンテナが正常に起動すると、実行状態になります。その後、Pod 内のコンテナが正常に終了すると、Succeeded 状態になります。 Pod 内のコンテナが異常終了すると、Failed 状態になります。
3. 再開戦略Pod の再起動は、Pod が配置されているノード上の kubelet によって決定および制御されます。 Kubelet は再起動戦略に応じて対応するアクションを実行します。 Pod 再起動ポリシーには、Always、OnFailure、Never の 3 つがあります。デフォルトは「常に」です。
4. 健康チェックヘルスチェック機能により、アプリケーションの可用性を確保し、外部からアクセスできるタイミングを制御できます。 K8S には、LivenessProbe 生存プローブ、ReadinessProbe 準備プローブ、StartupProbe 起動プローブの 3 種類の検査プローブがあります。
上記の 3 つのプローブをそれぞれ実装するには、次の 3 つの方法があります。
Java マイクロサービス アプリケーションをデプロイする場合、通常は HTTPGetAction メソッドを使用します。 5. プローブの選び方プローブには3種類ありますが、どのように選択すればよいでしょうか?
大人の世界には多肢選択式の質問はありません。必要なのはたった 3 つの単語だけですが、そのすべてが必要です。たとえば、アプリケーション シナリオが Spring マイクロサービスの場合、実際には 3 種類のプローブすべてが使用されます。 アプリケーションの起動は、起動開始→起動成功(生存)→外部アクセスの3段階に分かれます。 対応するプローブの使用順序は、起動プローブ → 生存プローブ → 準備プローブです。以下のように表示されます。 生存プローブのみを選択すると、扱いにくくなります。
準備プローブを設定しないと、扱いにくくなります。
したがって、複数選択の質問を行う必要はなく、すべての質問に回答し、各段階で対応するプローブを使用する必要があります。 6. 実際の戦闘1. 不健全なアプリケーションシナリオをシミュレートする(1)YAMLをアレンジする たとえば、ポッドの生存チェックを実行します。 30 秒経過しても生き残れない場合は、強制終了して再起動します。 ポッドが複数回再起動されたことがわかります (2)トラブルシューティング 問題が発生しても慌てないでください。トラブルシューティングには、kubectl get pods -n demo -o wide と kubectl describe pod pod-lifecycle -n demo を使用できます。例外の原因は明らかに、生存チェックの失敗です。 2. 起動が遅いアプリケーションをシミュレートする(1)YAMLをアレンジする たとえば、ポッドの生存チェックを実行します。 30 秒経過しても生き残れない場合は、強制終了して再起動します。シミュレートされた起動には時間がかかるため、コンテナは正常に起動する前に強制終了され、その後繰り返し強制終了されます。 yaml ファイルを実行すると、Pod が次のアクションを繰り返していることがわかります。ヘルスチェックが失敗した後に再起動されます。 (2)この問題を解決するためにstartupProbeを導入する
七。結論Kubernetes 内の各サービスの可用性を高めたい場合は、Pod のヘルスチェックが不可欠です。この記事の要点は次のとおりです。
そうは言っても、この記事の冒頭で私が提起した質問の答えはご存知のはずです。アプリケーションの起動時間は長いですが、生存プローブのみが構成されており、起動プローブは構成されていません。また、生存プローブの全体的な構成時間が短すぎるため、各マシンのパフォーマンスが異なるため、正常に起動できる場合もあれば、失敗する場合もあります。 |
<<: 生成 AI とクラウド ネイティブは期待が膨らんでいる時期にあります。それらは企業変革よりも重要ですか?
この物議を醸すタイトルを決めるのに、私は長いイデオロギー的葛藤を味わいました。私は 2 年以上 SE...
1. プログラミングコードホスティングウェブサイトから新たなオープンソース熱が生まれるソースコードは...
6月28日はウェブマスターにとって暗黒の日でした。大量のウェブサイトがBaiduのデータベースから追...
ウェブサイトの外部リンクに関して言えば、SEO担当者やウェブマスターが他のウェブサイトにアクセスして...
Baidu はユーザーの粘着性の重要性について言及し続けています。最近では、K-station に続...
実際、ほとんどのウェブマスターは、SEO にとってウェブサイトの「安定性」が重要であることを認識して...
現在、ますます多くのロングテールキーワードがウェブマスターの注目を集めており、ロングテールキーワード...
昨今、企業はオンラインマーケティングに注目し始めていますが、インターネットはどの程度成功していると言...
多くのブランドがBilibiliで広告マーケティングを行っていますが、広告の王様を選ぶなら、それは間...
米国時間1月12日、OpenStack Foundationの独立取締役の選挙結果が発表されました。...
onetechcloud では、毎年恒例の Double Eleven プロモーションを実施していま...
どのウェブサイトでも、ユーザーに価値ある情報を継続的に提供するために、優れたコンテンツ システムが必...
業界に入るときの疑問業界に初めて参入する場合、キーワード密度、外部リンクなど、SEO に関する非常に...
クラウドコンピューティング事業の急速な発展に伴い、国内外のクラウドコンピューティング企業間の特許紛争...
オンライン取引プラットフォームにとって、より重要なのは実際のコンバージョン率です。訪問者が実際に消費...