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 とクラウド ネイティブは期待が膨らんでいる時期にあります。それらは企業変革よりも重要ですか?
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています電子メール...
CPです!アプリストアについてお話しましょうグループリーダーは次のように語っています。「初期のアプリ...
みなさんこんにちは、小思です。モーメントについては、WeChatパブリックプラットフォームで電子商取...
1. タオバオはブラックリスト機能を導入し、悪質な購入者はブラックリストに登録される可能性がある6月...
この問題を明確にするために、いくつかの側面から議論します。 1. ウェブサイトのページの重みの移動は...
gcorelabsは9月21日、ブラジルのサンパウロデータセンターで、ブラジルVPS、ブラジルサーバ...
6月21日のGoogleアルゴリズムの大規模なアップデートは、業界関係者の間で白熱した議論を引き起こ...
ロシアの VPS 業者 justhost が新しいニュースを発表しました。/24、/23、/22 I...
[51CTO.com からのオリジナル記事] ファイアウォールやウイルス対策ソフトウェアを通じて企業...
著者は、草の根のウェブマスターや起業家がインターネットの発展の波の中で弱い立場にあるグループであるた...
Sugarhosts も有名なホスティング会社です。まず最初に知っておきたいのは、同社の仮想ホストで...
テンセントクラウドデータベースは8月28日、北京で正式に戦略アップグレードを開始し、今後はクラウドネ...
数日前、ザック兄さんがWeiboで、Baiduの公式外部リンクツールがもうすぐリリースされると言って...
未払い債務のため3月に閉鎖したTuanbao.comは昨日再開を発表した。 Tuanbao.comの...
Prometeus の新しいブランドである XenPower は、Intel E5 v2 CPU、1...