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 とクラウド ネイティブは期待が膨らんでいる時期にあります。それらは企業変革よりも重要ですか?
皆さんこんにちは。私は鄧完浩です。最近は淘宝網や淘宝網のサイトで忙しく、物事が多すぎるため、A5に記...
月給5,000~50,000のこれらのプロジェクトはあなたの将来ですこのインターネット時代では、ユー...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス2009年8月、中国初の...
Hostodo は、ブラックフライデー VPS プロモーションを提供しています。VPS が配置されて...
オンラインマーケティングに携わる友人は、垂直フォーラムに多数の正確な顧客が集中することを知っており、...
海外メディアCNBCが入手した内部文書によると、プライムデーのプロモーションが麻痺した主な原因は、ア...
myserverplanet(登録年:2010年、英国企業)が新しいビジネスを立ち上げ、cpanel...
私の友人の多くは北京、上海、広州で働いた後、地元に戻って求人サイトや地域ポータルを立ち上げています。...
「オープン性と統合による勝利」円卓フォーラム(写真はテンセントテクノロジー提供)テンセントテクノロジ...
情報技術応用イノベーション(ICT応用イノベーション)は、従来のITアーキテクチャのアップグレードと...
Hawkhostの毎年恒例のブラックフライデープロモーションが予定通り到来しました。これはHawkh...
デジタルへの移行により、デバイス、センサー、電話、ネットワーク、相互接続されたインフラストラクチャが...
オランダのホスティング会社であるfinalhostingは、主にオランダの「global-datac...
最近、多くの記事からウェブサイトのタイトル、キーワード、説明の設定方法を学んできましたが、同時に問題...
エッジ コンピューティングは、コンピューター ビジョンをインテリジェント システム、スマート デバイ...