コンテンツにスキップ

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       │
├────────┼─────────────┼────────────────────────────────────────────────┼──────┼──────────┼─────────────┼─────────────────────────┼──────────┼─────────────────────────┼──────────────────────┼─────────────┼───────────────────────────┼──────────────────────┤
...