2017-12-27 17 views
1

クラスタ内のいくつかのノードがダウンしてステータスがNotReadyになった場合、何らかのアクションを引き起こすことができますか?ノードを監視し、client-goまたはcurlを使用して「NotReady」になったかどうかを通知する方法はありますか?

client-goを使用して、/api/v1/watch/nodesを見ると、ノードのステータスがanyに変わったときに通知を受けようとしました。ノードステータスがReadyからNotReadyに変更された場合は、のみを通知するにはどうすればよいですか?

+0

ありがとう@Nickolayの編集の提案! –

答えて

1

今のところ、特定の更新を照会する方法はありません。

  1. NodeStatusは、磁界の変化を記録しlastTransitionTimeと呼ばれるフィールドを持っている:あなたがこれを実装することができる2つの方法があります。アプリケーションでは、X秒ごとにチェックし、最後にチェックした時間をlastTransitionTimeと比較して、変更があるかどうかを判断できます。お使いのアプリケーションが再起動する場合は、アプリケーションの起動時に一回チェックを行う必要がありますで書かれ

    { 
         "type": "Ready", 
         "status": "True", 
         "lastHeartbeatTime": "2017-12-27T09:52:19Z", 
         "lastTransitionTime": "2017-12-26T14:55:49Z", 
         "reason": "KubeletReady", 
         "message": "kubelet is posting ready status" 
    } 
    
  2. アプリクライアント行くのキャッシュを維持し、時計イベントからの値に、キャッシュ内の値を比較することができます。この場合も、ウォッチャーサービスがダウンしているときにイベントを逃さない方法を考える必要があります。その状態をどこかに保存することも、他のメカニズムを使用することもできますが、ユースケースの重要性に依存します。

私は見つけることができる最も近いの例では、ネットワークポリシーの変更をするために見ていると、ノード上のエージェントがそれに応じてファイアウォールルールを実装することができるように、関連する変更は更紗-etcdで行われる場合、キャリコ・ゴーです。この行からは、イベントが処理されます。もちろん、スタックをさらにナビゲートする必要があります。 Code

+0

ありがとう@Vishal Biyani! 「キャッシュの値をwatch-eventの値とclient-goの値を比較する」についての詳細はありますか? –

+0

サンプルコード/実装を指す新しいセクションを追加しました。 –

関連する問題