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

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

推薦する

Mituo ウェブサイト構築: 企業向けの高速でハイエンドなオープンソースのセルフサービス ウェブサイト構築を実現する方法

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますMituo...

価値を理解し、潜在能力を引き出す: Lenovo が超高性能の SAP HANA オールインワンの新世代を発表

企業は、インテリジェントなデータ管理の将来のニーズにどのように対応すべきでしょうか?最近、Lenov...

chicagovps-3g メモリ/100g ハードディスク/2 ips/2.5t トラフィック/7 ドル/月

chicagovps は、ローエンド VPS ページのヒーロー版として常に存在してきましたが、中国人...

ハードウェアの販売:コンピュータルームの在庫、各種在庫一掃セール

私は、コンピュータ ルームのハードウェア在庫の売却を手伝っています。説明させてください。在庫とは、廃...

パブリッククラウド、プライベートクラウド、ハイブリッドクラウドの比較

現在、ほぼすべての企業がクラウド コンピューティングを計画または使用していますが、すべての企業が同じ...

Renren Expressは完全に停止したわけではない。同社はより安全な新バージョンを発売すると述べた。

先週、湖北省郵政局と洛陽市郵政局はそれぞれ人人速達の営業活動を停止した。 「人人快捷」は昨日、湖北省...

SEOとユーザーエクスペリエンスに関する議論

最近、Bai Ya兄弟のSEOとユーザーエクスペリエンス、親しみやすさ、長い道のり、ウェブサイトコン...

著作権なし/外国貿易 VPS: hostsolutions-1.99 ユーロ/メモリ 2g/ハードディスク 30g/トラフィック 30T

hostsolutions.ro は、ルーマニアの著作権フリー VPS プロモーションを提供していま...

vinahost: カンボジア VPS/カンボジア クラウド サーバー、月額 38 ドルから、トラフィック無制限

2008 年に設立されたベトナムのホスティング会社である vinahost は、ベトナム、タイ (機...

新しいサイトがインデックスされていない場合はrobots.txtファイルを無視しないでください

今日、偶然、ウェブマスターの友人の講演を目にしました。彼は、自分の新しいウェブサイトがなぜ含まれてい...

Adobe はついにクラウド テクノロジーをオンラインで利用するための大きな動きを起こすのでしょうか?

Adobe MAXカンファレンスが水曜日にラスベガスで開催されました。 Adobe はソフトウェアア...

知乎:中国のインターネットの11の収益モデル

収益モデル1:オンライン広告主な最も一般的なオンライン収益モデルは、中国で優れているのは業界ポータル...

初心者向け科学: 分散とクラスター

1. 分散型Xiao Ming の会社には、システム A、システム B、システム C の 3 つのシ...

Yunyun Search は検索業界にどのような新しい要素をもたらすのでしょうか?

2012年12月18日にひっそりとリリースされたYunyun検索に気づいたかどうかはわかりません。数...

平和なウェブマスターはウェブマスターネットワークの重みの変化とスナップショットの異常を分析します

いつの間にか、ウェブサイトは2年間運営されてきました。この2年間、私はさまざまな浮き沈みを経験しまし...