コンテンツにスキップ

krr@ベストプラクティス違反

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. krrの仕組み

アーキテクチャ

Prometheusのメトリクスから各コンテナに最適なCPU/メモリの設定値を算出できる。

kkrを含めた様々なメトリクスを監視する場合、開発元が同じrobustaを使用する。


設計思想

krrでは、CPUの.spec.containers[*].resources.limitsキー値の設定はアンチパターンとして扱っている。

そのため、未設定を推奨している。

理由として、CPUを制限してしまうと、コンテナがどんな状況であってもコンテナにCPUを割り当てない。

これにより、コンテナがハードウェアリソース不足を起こす可能性が高くなるためである。


アルゴリズム

CPUに関して、99%のCPU処理が余裕を持てるように数値を算出する。

メモリに関して、過去一週間の最大値に5%のバッファーを加えて、数値を算出する。


02. CLI

simple

シンプル戦略に基づいて、最適なCPU/メモリの設定値を算出する。

$ krr simple

┏━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Number  Namespace    Name                                            Pods  Old Pods  Type         Container                CPU Diff  CPU Requests             CPU Limits            Memory Diff  Memory Requests            Memory Limits        ┃
┡━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│     1.  foo          foo-pod                                         0     1         Job          foo                                 500m -> ? (No data)      unset -> ? (No data)               256Mi -> ? (No data)       unset -> ? (No data) │
├────────┼─────────────┼────────────────────────────────────────────────┼──────┼──────────┼─────────────┼─────────────────────────┼──────────┼─────────────────────────┼──────────────────────┼─────────────┼───────────────────────────┼──────────────────────┤
│     2.  bar          bar-pod                                         1     0         Deployment   bar                      +10m      (+10m) unset -> 10m      unset                 +100Mi       (+100Mi) unset -> 100Mi    unset -> 100Mi       │
├────────┼─────────────┼────────────────────────────────────────────────┼──────┼──────────┼─────────────┼─────────────────────────┼──────────┼─────────────────────────┼──────────────────────┼─────────────┼───────────────────────────┼──────────────────────┤
│     3.  baz          baz-pod                                         2     0         Deployment   baz-1                    +20m      (+10m) unset -> 10m      unset                 +200Mi       (+100Mi) unset -> 100Mi    unset -> 100Mi       │
│     4.                                                                                            baz-2                     +20m      (+10m) unset -> 10m      unset                 +200Mi       (+100Mi) unset -> 100Mi    unset -> 100Mi       │
│     5.                                                                                            baz-3                     +20m      (+10m) unset -> 10m      unset                 +200Mi       (+100Mi) unset -> 100Mi    unset -> 100Mi       │
├────────┼─────────────┼────────────────────────────────────────────────┼──────┼──────────┼─────────────┼─────────────────────────┼──────────┼─────────────────────────┼──────────────────────┼─────────────┼───────────────────────────┼──────────────────────┤
...