はじめに
k8s運用でのリソース最適化ってかなり面倒、、!ということで、実際に手を動かしてEKSでのリソース最適化の流れを試してみました。
Turbonomicがないとき
Step1:Podで問題を見つける
パフォーマンスが悪いなと感じた時にPod一覧を見て、再起動や止まっているPodがないか確認します。
再起動しているPodを探してメトリクスを確認、メモリ不足などの原因を探します。
Step2:Podの親(Deployment)を特定
問題のPodとその原因が特定できたら、Podの親となるDeploymentを特定します。
⚠️Podはすぐに消えるので、Pod作成元のDeploymentでリソース設定変更します
特定手順
- EKSコンソール → 対象クラスタ
- 「Workloads」→「Pods」
- 該当Podをクリック
- 詳細画面で「Controlled By(以下によって制御:)」を確認
Pod→ReplicaSet→Deploymentとドリルダウンします。
③ Deployment
ドリルダウン!!でようやくDeploymentに辿り着きました。。
Step3:Deploymentを編集
Deploymentに辿り着いたら、パフォーマンス悪化の原因となっているリソースの値を編集します。
Step4:再デプロイ(自動)
Deploymentで値を設定し直せたら、再デプロイします。
Deploymentを更新すると自動で新しいReplicaSetが作成され、ローリングアップデート(新しいPodが起動し古いPodが削除される)が起こります。
以下のコマンドで状況を確認します。
# 状態確認
kubectl rollout status deployment cartservice -n retail-store
# podの入れ替わり確認
kubectl get pods -n retail-store
Turbonomicない場合の感想
ここまでの流れを見ると、
- Podで問題を見つける
- Deploymentまでドリルダウンする
- 手動で設定変更する
- 再デプロイして様子を見る
この一連の作業を繰り返す必要があることが分かります。たった一つのリソース設定を変えるだけで、、!
さらに、
- コンテナとノードの両方を考慮する必要
- トラフィック変動に追従し続ける必要
もあります。とてもやってられませんね。。
Turbonomicがあるとき
Step1:環境ごとのリソース状態を把握
Podで問題を見つける前に、環境全体のリソース状態(メモリ・CPU・ストレージなどのコンピューティングリソースを指す)が確認できます。アプリケーションごとにリソース状態どんなもんかな?と確認できて便利です!
- トップ・コンテナ・プラットフォーム・クラスター:EKSのクラスタごと
- トップ名前空間:名前空間ごと(アプリケーションごと)
Step2:リソース最適化アクションを把握

Podもそれ以外も全部含めて、パフォーマンス改善・コスト削減のためのリソース最適化アクションをTurbonomicが自動で作ってくれます。
Step3:ボタン一つで最適化
アクションの詳細を見て、右下の青いボタンを押すとリソース最適化が完了します。
その際に、アクションを実行した際の前後のパフォーマンスの変化もグラフや具体的な数値で確認できるので安心です。
かなり簡単!Turbonomicが全て自動で用意してくれているので、AWS画面上で逐一色々なページに飛んで確認しなくていいし、Turbonomicが揃えた情報を確認して判断するだけでリソース最適化完了!感動です。
終わりに
今回は、k8s運用におけるリソース管理をTurbonomicがある場合・ない場合で比較してみました。
手動での最適化では、調査・設定変更・再デプロイ・検証といったプロセスを繰り返す必要があり、継続的な最適化は大きな負担、というか完璧にするのは無理だなと感じました。
一方でTurbonomicだと、全て用意されている状態なので、サクサクと直感的にリソース最適化が可能です。
k8s運用の効率化を考える上で、Turbonomicはとても役に立つなと身をもって感じられました。






