k8s クラスターでログが更新されない POD を自動的に再起動するための小さな要件

k8s クラスターでログが更新されない POD を自動的に再起動するための小さな要件


k8s

必要

日々の仕事では、すべてのプロジェクトが完璧というわけではありません。ポッドのステータスは実行中であるが、プログラムが応答しないという状況によく遭遇します。これが起こる理由はたくさんあります。これは、ps を使用してプロセスをチェックするなど、k8s ヘルス チェックが原因である可能性があります。または、プログラムが無限ループに陥っていても終了しない可能性があります。または、ネットワークが切断され、プログラムが再接続できないなどの可能性があります。

理由が何であれ、解決策はありますが、最適化には時間がかかります。完全に解決する前に、問題を解決する必要があります。そこで一時的な解決策を考えました。私の会社のプロジェクト ログが stdout に直接印刷されるため、プログラムが応答しなくなります。より簡単な方法は、ログ出力の時間を決定することです。これに基づいて、ログが長時間出力されないことがわかったときにポッドを再起動するための小さなスクリプトを簡単に作成できます。

アイデア

kubectl logs コマンドを実行して、最後のログ出力のタイムスタンプを確認し、それをサーバーの時間と比較します。差がしきい値より大きい場合は、対応する POD を再起動します。もちろん、これは単なる単純なアイデアであり、ほとんどのシナリオには適用できませんが、コアプロジェクトには多数のリクエストがあるため、私の会社には適しています。ログが 1 分以上更新されない場合、基本的に 100% 問題があると判断できます。

このアイデアは単なる出発点に過ぎませんが、皆さんにインスピレーションを与えることができれば幸いです。もっと良い方法があれば、著者とコミュニケーションをとることもできます。

シンプルな実装

シェルは比較的シンプルで、サーバーと直接やり取りするのもより簡単なので、シェルを使用して記述するだけです。

  1. #!/bin/sh
  2. # 現在の UTC 時刻を取得します utc_now=` date -u`
  3. # 時間をタイムスタンプに変換するtimestamp_now=` date -d "$utc_now" +%s`
  4. 関数restart_pod() {
  5. i in `kubectl get pod -n iot|grep PODNAME|awk '{print $1}' ` ; do
  6. のために 時間  ` kubectl logs --tail=1 --timestamps $i -n iot | でawk '{print $1}'`;do  
  7. timestamp_pod=`日付-d "$time" +%s`
  8. 遅延=$(($timestamp_now-$timestamp_pod)) echo $i:$delay if [ "$delay" -ge "30" ];それから 
  9. echo "30 秒以内に Pod $i で最新のログが生成されませんでした。Pod を再起動してください。"  
  10. echo $i kubectlポッド $i -n iot --force --grace-period=0を削除します 
  11. curlwxFunc "Pod $i 30 秒以内に最新のログが生成されませんでした。Pod を再起動してください! (本番環境)"  
  12. fi 完了 完了}関数curlwxFunc() {
  13. JSON = '{
  14. "メッセージタイプ" : "テキスト" ,
  15. "文章" : {
  16. 「コンテンツ」 : 「'$1'」  
  17. }
  18. }'
  19. curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx' \
  20. -H 'コンテンツタイプ:application/json' \
  21. -d "${JSON}"  
  22. }ポッドを再起動

スクリプトは非常にシンプルです。まずポッドをクエリし、次にポッドの最後のログの時間を調べて、それをサーバーの時間と比較します。遅延が 30 秒を超えると、ポッドが再起動され、エンタープライズ WeChat インターフェースが呼び出されて通知が送信されます。

追記

この方法は一時的な解決策に過ぎず、根本的な原因を解決するものではありません。症状に対処するには、問題を根本から解決する必要がありますが、これには時間がかかります。問題が解決する前に、まずこの小さなスクリプトを使用して問題に対処してください。皆さんの批判も歓迎します。

<<:  テンセントミーティングが中国で初めてSOC2タイプ2監査に合格したビデオ会議製品に

>>:  大きなエネルギーが待ち受けている:中国電子クラウドがクラウドコンピューティング市場に参入、警笛が鳴る

推薦する

クラウドデータベースはテクノロジースタックの重要な部分です

適切なクラウド データベースを導入すると、クラウドからモバイル、エッジに至るまで、企業が依存するさま...

ミンスグループ:スマートエンタープライズを構築するためのデジタルエンパワーメント

自動車メーカーは、電動化、インテリジェンス、ネットワーク化、シェアリングという新たな4つのトレンドに...

chicagovps - すべての VPS が 50% オフ、年間支払いはわずか 6 ドル、データ センターは 6 か所

Chicagogovps は長い間プロモーションを行っていませんでしたね。こんな感じで覚えてます!誰...

クラウドへの移行方法: 7 つのベスト プラクティス

クラウドに移行する理由は明確ですが、組織がクラウド移行を完了するために必要な概念と実践を把握するのは...

アリババとテンセントがミニプログラムをめぐって争う!

WeChatミニプログラムの発売から3年が経過した現在も、Alipayミニプログラムは勢いを増し続け...

WeChatプロモーション活動を通じて新規ユーザーを獲得するには?

まず最初に、私がこの要約を書いた理由を紹介したいと思います。 1年前、私はAlibabaやVipsh...

個人映画サイトの運営方法についての簡単な説明

最近では個人ウェブマスターになることがますます難しくなってきており、個人ウェブマスターの見通しも明る...

最も人気のあるCPC広告チャネルについてお話ししましょう

検索エンジン入札広告はCPC有料広告の最も主流のチャネルですが、最近の検索エンジン入札は楽観的ではあ...

ウェブサイト維持戦略とSEO最適化の統一原則

ウェブサイトはどのようにしてユーザーを維持できるのでしょうか。これは非常に奥深いテーマです。私たちは...

Baidu が初の「ソーシャルメディア共有データレポート」を発表

百度が初の「ソーシャルメディア共有データレポート」を発表、ユーザーの1日あたりの平均共有量は60%増...

arebz -peer1データセンター/中国最適化回線/無制限トラフィック/年間支払い189元から

peer1 データセンターは、中国では多くの人から中級から高級のデータセンターと見なされています。国...

中小企業がオンラインマーケティングを体系的に行うには(I)チャネル(第1部)

現在、オンライン マーケティングという言葉は非常に人気があります。従来型企業であれインターネット企業...

HostHatch - すべての VPS が 20% オフ + 「言葉では言い表せない」メモリ時間 / 無料 cpanel ライセンス

hosthatch からの最新ニュース: [1] メモリが「言葉では言い表せないほど」倍増 + 20...

3分レビュー! 2021年8月のクラウドコンピューティング分野の重要な動向を簡単に紹介します

[[419910]] 2020年以降、クラウドコンピューティングがトレンドになりました。ますます多く...