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監査に合格したビデオ会議製品に

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

推薦する

画像共有コミュニティ: 大企業 Pinterest の人気は始まりに過ぎない

2010年に設立された写真共有コミュニティのPinterestは、1年以内にそれぞれ1,000万ドル...

Cloud Native Sqoop on k8s の解説と実践的な操作

1. 概要Sqoop は、構造化データと Hadoop 間のバッチデータ移行のためのツールです。構造...

budgetvm-36% オフ/VPS/4 データセンター/1000M ポート/Xen/OVZ/Windows

budgetvmの10月のプロモーションオファーは今月末まで延長され、主にサーバーとVPSが2台購入...

アプリのプロモーション:アプリストアやその他のプロモーション チャネルに掲載する前の準備!

アプリが開発されたら、次のステップでは当然アプリの宣伝に重点が置かれることになります。部隊が移動する...

ウェブマスターネットワークからの毎日のレポート:アリファイナンスはFacebookを銀行に開放し、ウェブサイトを刷新する予定

1. アリババの金融環境:銀行に門戸を開き、大規模な金融プラットフォームを構築ジャック・マーのプラッ...

草の根ウェブマスターの実態:厳しい生活環境と自営業の欠点

まず、感謝の意を表したいと思います。A5 ウェブサイトで私の意見を表明できることを光栄に思います。草...

Galanz はデジタル変革を支援するために AWS を選択

Amazon グループ会社の Amazon Web Services, Inc. (AWS) は本日...

「MQ シリーズのマスター」 - Kafka アーキテクチャ設計の Ren 子午線と Du 子午線

[[404881]]みなさんこんにちは。私はウー兄弟です。これは、Kafka のアーキテクチャ設計に...

新しいサイトが含まれていない場合はどうすればいいですか?

新しいウェブサイトをランク付けするのは非常に困難です。経験豊富なウェブサイト所有者でさえ、このような...

Dangdang.com はなぜ成長できなかったのでしょうか?

はじめに:なぜ当当は大きく成長できないのか?それは上場のタイミングの問題であり、事業レイアウトの問題...

クラウド変革を成功に導く道: 考慮すべき重要な要素

クラウド変革は企業にさまざまなメリットをもたらしますが、成功するには慎重な計画と実行が必要です。クラ...

簡単な議論: ウェブサイトのホームページを頻繁に変更した後の隠れた懸念

一般的に言えば、ウェブサイトのホームページはウェブサイトで最も重要なウェブページです。検索エンジンは...

ブルーホスト ブラックフライデー 3.95ドル/月

bluehost の仮想ホストについてはあまり語りません。アメリカの仮想ホストの安定性、速度、リソー...

オリジナルコンテンツ:大学におけるWeChatパブリックアカウントのチーム構築、運用、プロモーション

今日は、大学のパブリックアカウントのチーム構築、運用、プロモーション戦略を分析します。大学生起業家の...

WeChatがWeiboマーケティングに取って代わることができない理由

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスモバイルインターネットの...