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

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

推薦する

Weiboマーケティングで注意すべき点は何ですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...

2020 年のモバイル業界で予測される 5 つの主要トレンド!

モバイル業界にとって、2019 年は終わりに近づいており、来年はさらに幅広い発展の見通しが期待されて...

動画編集アプリ、将来性はどんどん狭くなっている?

ビデオ編集アプリが一定の段階まで発展すると、ビジネスモデルの開発という同じ問題に直面することになりま...

Webmaster Network の毎日のレポート: Xiaomi 360 が Chrome に衝突し、世界ナンバーワンのブラウザになる

1. Xiaomi 360の「衝突」:ネットユーザーがXiaomi 3とXiaomi 3の戦いを観察...

Alibaba と Tencent の SaaS アクセラレータとローコードの戦いは、大混乱を引き起こす可能性があるでしょうか?

アリババとテンセントの戦争は、CエンドからBエンドへ、そしてBエンドからクラウドへと広がっています。...

万科クラウド戦略発表:共有コンピューティングが一般ユーザーに開放される

10月31日、Xunleiの新世代シェアリングエコノミースマートハードウェア「One Cloud」の...

日本のクラウドサーバーの推奨:帯域幅が大きく、価格が安く、CN2\CU2\Softbank\IIJ\KDDIなどのハイエンド回線

日本のクラウドサーバーで一番良いのはどれですか?どの日本のクラウドサーバーが速いですか?日本のクラウ...

ゲスト VM クラスタリングによる共有仮想ストレージの詳細

ゲスト クラスターは、すべてのクラスター ポイントが仮想マシンであるフェールオーバー クラスターです...

返品や交換を減らすには、ユーザーの期待を変えることから始まります

まず、ユーザーが商品を返品または交換したい理由を考えてみましょう。明らかに、悪意のあるレビュー投稿者...

XenS の「言葉では言い表せない」年齢 - 20 年 / Xen / 256 MB のメモリ / 150 g のハードディスク / 500 g のトラフィック

drserver.net のストレージ VPS ブランドである XenS の「言葉にできない」時代は...

図: インターネットは過去10年間で私たちの世界に完全な革命を起こした

2002 年当時、Apple の iMac G4 は市場で最も軽量、最薄、そして最も洗練されたコンピ...

ポストデスクトップ時代、寡占競争はどのような考え方や価値観を持つべきか(上)

インターネット上の競争は白熱した段階に達しており、このような特別な時期には、市場で最も人気があるWe...

アウトバウンドリンクを構築するための実践ガイド

私は a5 ウェブマスターの Web サイトに記事を送信しましたが、多くのウェブマスターが記事を収集...

Forbes: エッジ コンピューティングのビジネス ユースケース 12 件

クラウド コンピューティングは長い間話題になっているため、多くのビジネス オーナーはそれが唯一のもの...

ブランドマーケティング: 一般的な消費者心理 15 項目とそれに対応するマーケティング戦略

消費者心理にはさまざまな種類があり、インターネット上の多くの記事でも関連する説明が提供されていますが...