Autoscalerについて動機KubernetesでPod間通信をしたときに、レスポンスタイムがスパイクするような現象に遭遇しました。アプリケーション側のコードには問題がなさそうで、Kubernetes上でホストしていてCPUなどリソースが怪しいのではないかという予測しています。今回はResourceに関わる二つの設定項目RequestとLimitについて調査します。Autoscalerも調べました。メモリ)を指定することができる仕組みです。Requestした以上のリソースを使うことができる。Requestならばデプロイされる。Requestに空きがあればデプロイされる。LimitsPodが使うリソースの上限を設けられる仕組みである。注意点Nodeのリソースに空きがあっても使うことはできない。Nodeのリソース以上に配分することができる。リソースの指定方法CPUCPUは1000m=1vCPUである。1vCPUという計算になる。Kなどいろんな単位があるので、そちらを参照してください。リソースが越えると......ランタイム中にリソースが越えると以下のようなことが起きる。CPUCPUの場合は処理に時間がかかってしまうが、何も起きずREADYのままである。Time)に大きく影響する。Memory(OOM)としてプロセスをKissして、コンテナが消滅します。backoffアルゴリズムにしたがって、再起動のサイクルは遅くなる。Autoscaler(HPA)概要リソースの使用量によってPodの数を自動的に変更する仕組みです。仕組みデフォルトでは30秒に一回、メトリクスを取得します。以下のフラグで変更することができます。--horizontal-pod-autoscaler-sync-period複数のメトリクスでHPAautoscaling/v2beta2を使うことによって複数のメトリクスを使うことができます。hogeのように`Deploymentに名前で指定する。以下のような種類があります。Kubernetes外のメトリクスCPU以外のリソースはPrometheusなどの他のメトリクスサーバーと連携するため、別途設定をしないといけない。Autoscalerを見ることができます。5hベストプラクティスNodeをアプリケーションから保護する以下の項目より、あらかじめシステム様にCPUを保護するとアプリケーションに全CPUソースを取られることがなくなる。--kube-reserved="cpu=100m,memory=100Mi,ephemeral-storage=1Gi"--system-reserved="cpu=100m,memory=100Mi,ephemeral-storage=1Gi"LimitsRangeを活用するLimitRangeを活用するとNamespaceごとにCPU/メモリのリソースの最小値、最大値、デフォルトの値などを設定することができます。これはPodを作成するときに有効化するので、既存のデプロイされたものには適用されませんので注意してください。まとめリソースをチェックすると以下のようになっていました。これだとNodeは動作速度が遅くなるし、大変です。改善できるところを見つけて、どんどんやっていこうと思います。カオスだった平成最後の日に。Kubernetesのいろは。2018の14日目の...2018-12-23Concourseで継続的デリバリー。»プロフィール学生エンジニア。忘れてしまうので備忘録です。flaskでServerlessにホストするTelepresence概論スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。