サービスを運用している中で緩やかにメモリ使用率が上がっていく問題があり、それが解決されるまで一時的になんとかするために掲題のを作りました。
中身自体はZapierが作っていたpreoomkiller-controllerが元になっております。
このコントローラーを導入すれば済む話じゃない?ってなりそうですが、こちらは「メモリ使用量」を閾値としており、更に更新も止まっていたのでせっかくなら勉強がてら作り直すかーとなった結果こうなりました。
この手のk8sに関するツールを今まで全く作ったことがなかったので、勉強に以下の本を読ませていただきました。
preoomkiller-controllerでclient-goを使っていたこともあり、かなり勉強になりました!
で、この本とpreoomkiller-controllerを読んでちょろちょろ書き直した結果、以下のように修正しました。
- メモリ使用量からメモリ使用率の閾値に変更
- Go1.13からGo1.20に対応
- helm installでインストール出来るようにした
- その他、動かなくなっていたところをチマチマ修正
他にも色々直したいところはあるんですが、そこは追々手を入れていこうかなと思ってます。
もし、要望やアイデアがあれば大歓迎なので是非issueにおねがいします🙏