Kubernetes プローブの落とし穴

Kubernetes プローブの落とし穴

[[342084]]

この記事はWeChatの公開アカウント「Dotnet Plus」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合はDotnet Plus公式アカウントまでご連絡ください。

1. 不条理

過去 1 ~ 2 か月間、本番環境の K8s クラスターでは、短期間の 503 Service Temporarily Unavailable が頻繁に発生しており、積極的に再現することはできません。これはかなり憂鬱でストレスがたまります。

HTTP 5xx 応答ステータス コードは、サーバー側のエラーを定義するために使用されます。

  • 500 内部サーバー エラー: 要求されたサーバーで予期しない状況が発生したため、要求を処理できませんでした。これは通常、単一のリクエストに対して行われますが、サイト全体が引き続き処理される場合もあります。
  • 502 Bad Gateway エラーは、接続リンク内のサーバーがオフラインまたは利用できないことを示します。
  • 503 サービスは利用できませんは、アプリケーションをホストしている実際の Web サーバーに問題があることを意味します。

2. トラブルシューティング記録

  • 基本的に2~3日に1回表示され、1回あたり2~3分間続きます。現時点では駅全体は503です。
  • 問題を積極的に再現することができなかったため、8 月 26 日に、該当期間の EFK ログ (Impala 接続の問題) を確認しました。ビッグ データの運用と保守を担当する同僚は、Web アプリケーションから Impala に対して開始された要求が Impala クラスターのクロックと一致しておらず、Web アプリケーション ImpalaODBC ドライバーが Impala クラスターに接続できないことを発見しました。

k8s クラスター ノードに入ると、確かに一部のノードのクロック調整サービスが開始されておらず、北京時間よりも 2 ~ 3 分遅れていることが時々わかります。これは確かに、時間差によって Impala 接続認証が失敗する原因を説明できます。

  • 8月26日に、すべてのk8sノードのクロックが同期されました。ほぼ1週間経っても問題は発生しませんでした。
  • 9月3日、再び503系統の短期間の運行停止が発生しました。 EFK ログには、依然として Impala 接続の問題であることが示されていました。ここのビッグデータの同僚たちは具体的な原因を突き止めることができず、一時的に散発的/ジッターと定義しましたか?

3. 思考と推論

障害サイトで Impala 接続の問題が発生するたびに、Impala 接続の問題によって Web アプリケーション サービスがオフラインになる理由がわかりません。

当社のウェブアプリには、toB と toC の両方のビジネスがあります。このサイトは mongodb に大きく依存しており、impala への依存度は低いです。impala が接続できない場合でも、それをチェックできないだけで、サイトの SSO + 注文関連の書き込み操作は引き続き利用できるはずです。

数日前に見たk8sプローブを思い出すと、準備プローブがImpalaを検出したようです。

  1. // ASP.NetCore で公開される検出ロジック: impala && mongodb
  2. サービス.AddHealthChecks()
  3. .AddCheck<ImpalaHealthCheck>(nameof(ImpalaHealthCheck)、タグ: new[] { "readyz" })
  4. .AddCheck<MongoHealthCheck>(nameof(MongoHealthCheck)、タグ: new[] { "readyz" });
  5.         
  6. app.UseHealthChecks( "/readyz" 、新しいHealthCheckOptions
  7. {
  8. 述語 = ( check ) => check .Tags. 「readyz」 を含む
  9. });

準備プローブが Impala の検出に 3 回失敗すると、Pod は Unready としてマークされ、Pod は webapp サービス ロード バランサーから削除されてトラフィックを分散しなくなり、nginx に実用的なバックエンド サービスがなくなり、サイト 503 になる可能性が高くなります。

すぐにベータ環境を見つけ、Impala を切断して仮説を検証します。

4. 問題のレビュー

バグ修正は私が推測したものではなく、純粋に経験に基づいて推測されたものです。はっきりとした推理のアイディアはありませんが、誰もが落とし穴に足を踏み入れる早期警告とみなすことができます。

Docker のヘルスチェックは検出のみ可能ですが、Kubernetes の生存プローブと準備プローブには検出機能だけでなく意思決定機能もあります。

ここで、k8s 準備状況検出戦略に問題があります。

webapp の impala への弱い依存関係に問題があることが検出された場合、webapp サービス全体がオフラインになります。強い依存関係のみを検出する必要があります。強い依存関係の問題は、コンテナの準備ができていないことを示しており、これは準備状況プローブの本来の目的でもあります。

<<:  シングルテナント SaaS アーキテクチャとマルチテナント SaaS アーキテクチャの違いは何ですか?

>>:  【純乾物】5G?エッジコンピューティング?またまた大げさな「コンセプトの誇大宣伝」?

推薦する

locvps: オーストラリアの VPS、China Unicom AS9929 へのアクセス、20% 割引、月額 29 元から、Windows をサポート

locvps は現在、オーストラリアのデータセンターに VPS (オーストラリア VPS) を追加し...

ダイヤモンド展最大の問題「クリックコスト」を克服する方法

ダイヤモンド展は千回のインプレッションに基づいて課金されるため、クリック単価はダイヤモンド展のプロモ...

ウェブマスターネットワークレポート:WeChat詐欺の根絶は困難、テンセントのオンライン教育への参入に注意

1. CCTVの3.15ガラで明らかにされたWeChat詐欺の根絶の難しさは、「双方向の閉鎖」に起因...

Google Drive が 4 年ぶりに値下げされ、Google One に名称が変更される

何らかの理由により、Google は最近、Google Drive クラウド ストレージ プランの名...

クラウド コンピューティングとクラウド ストレージの関係は何ですか?

IT 業界は現在、これまで以上にクラウド コンピューティングを重視しています。クラウド コンピューテ...

分散ストレージに関する5つの嘘

近年のストレージの世界で最も人気のあるものといえば、分散ストレージです。分散ストレージは誕生以来、ス...

新しいLinodeの簡単なレビュー

私は 2011 年に Linode を使い始めましたが、ウェブサイトに収入がないときに自分のお金を使...

百度のウェブサイトインデックスの急激な低下に関する考察

周知のとおり、6月22日と6月28日の最近の出来事はインターネット上で広く伝えられ、多くのウェブマス...

プロのウェブマスターの変革の苦しみ

インターネットの波の中で、プロのウェブマスターがどれだけ生き残っているかはわかりません。記事の最初の...

ウェブサイト分析: 高性能 JavaScript テンプレート エンジンの原理の分析

Webの発展に伴い、フロントエンドアプリケーションはますます複雑になり、バックエンドをベースにしたJ...

WeChat公開会議で明らかにされた殺意、最も価値のある情報はここにある

Titanium Media Note: 昨日のWeChatパブリックコミュニケーションカンファレン...

IBMがRed Hatを買収:クラウド市場に革命を起こし、世界トップのハイブリッドクラウドプロバイダーが誕生

IBM と、オープンソース クラウド ソフトウェアの世界大手プロバイダーである Red Hat は、...

インターネットへの道は困難に満ちている。個人のウェブサイトは突破できるのか?

2013年、インターネットは誕生して何年も経ちました。2010年にウェブサイトの構築を始めたものの、...