以下の内容はhttps://shepherdmaster.hateblo.jp/entry/2022/02/23/164435より取得しました。


【解決編】EKS Cluster Autoscalerとログ保存用Daemonsetの組み合わせでスケールイン時にログが失われる問題

shepherdmaster.hateblo.jp の続き&解決編です。

add DaemonSet eviction option for empty nodes by yaroslava-serdiuk · Pull Request #3824 · kubernetes/autoscaler · GitHub がリリースされたので、--daemonset-eviction-for-empty-nodes=trueオプションをつけることで、アプリケーションpodのpreStop内のsleep時間を短くし、代わりにfluentd podのsleep時間を長くすることで、ログが正常に保存されることが可能になりました。

つまり流れを以下にできる。

  1. NodeのScale inが開始される
  2. アプリケーションpod と fluentd pod のターミネート処理が始まる
  3. fluentd podのpreStop内で長いsleepを実行
  4. 先にアプリケーションpodのターミネート処理が終わる
  5. fluentd podがログを保存する処理(flush)を実行(プロセスID 1にSIGTERMを送るとかで)
  6. fluentd podのターミネート処理が終わる アプリケーションPodとfluentd Podが終了したのでNodeインスタンスの終了処理が実行される

図にするとこんな感じ

f:id:shepherdMaster:20220223163245p:plain

以前と比べるとだいぶ自然な流れにできましたね。




以上の内容はhttps://shepherdmaster.hateblo.jp/entry/2022/02/23/164435より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14