OSSのK8sクラスタ管理ツール比較:k9s vs Lens vs Headlamp でKubernetesを快適に運用する
オープンソースラボ編集部 ・ 2026年6月14日
OSSのK8sクラスタ管理ツール比較:k9s vs Lens vs Headlamp でKubernetesを快適に運用する
Kubernetes Dashboard(公式・機能限定)・Rancher(エンタープライズ・重い)に対して、k9s(ターミナルUI・最も高速なK8sクラスタ操作)・Lens(Electron製・最も豊富なGUI)・Headlamp(軽量WebUI・拡張可能)はOSSのKubernetesクラスタ管理ツールです。
K8s管理ツールが必要な場面
- リアルタイムモニタリング: Pod/Node/Deploymentのリソース使用量を一覧で監視
- デバッグ: CrashLoopBackOffのPodのログとイベントを素早く確認
- スケール操作: ReplicaSetのスケールアップ/ダウンをGUIで即実行
- マルチクラスタ管理: 開発・ステージング・本番の複数クラスタを1画面で切り替え
- ログテーリング: 複数Podのログを同時にストリーミング表示
主要ツールの概要
k9s
2018年に公開されたGo製のOSSターミナルUIです。GitHubスター27k+。kubectlコマンドを覚えなくてもvimキーバインドでK8sリソースを操作できるTerminal UIで、K8sエンジニアに最も愛用されているツールです。:pod・:svc・:deploy等でリソース一覧を表示、lでログ、sでshell、dでdescribeが即座に実行できます。
# k9sのインストール
# macOS
brew install k9s
# Linux( snapd)
snap install k9s
# またはバイナリ直接取得
curl -sS https://webinstall.dev/k9s | bash
# Windowsはscoop
scoop install k9s
# k9sの起動と基本操作
k9s # デフォルトkubeconfigで起動
k9s --kubeconfig ~/.kube/config # kubeconfig指定
k9s -n default # 特定ネームスペースで起動
k9s --context prod-cluster # 特定のクラスタコンテキストで起動
# k9s 内のキーバインド(起動後)
# :pod → Pod一覧を表示
# :svc → Service一覧
# :deploy → Deployment一覧
# :ns → Namespace一覧
# :pvc → PersistentVolumeClaim一覧
# l → ログを表示(選択中のPodのログをテーリング)
# s → コンテナにshell接続(exec -it)
# d → describe(詳細情報)
# e → YAMLをvimで編集(kubectl edit)
# ctrl+d → Podを削除
# / → 名前でフィルタリング
# ? → ヘルプ(キーバインド一覧)
# ~/.config/k9s/config.yaml - k9sのカスタム設定
k9s:
refreshRate: 2 # 2秒ごとにリフレッシュ
maxConnRetry: 5
ui:
skin: dracula # テーマ(dracula・solarized等)
noIcons: false
headless: false
logger:
tail: 200 # ログの表示行数
buffer: 5000
sinceSeconds: 300 # 直近5分のログを表示
fullScreenLogs: false
clusters:
prod-cluster:
namespace:
active: production
favorites:
- production
- monitoring
- ingress-nginx
views:
deployments:
columns:
- NAME
- READY
- UP-TO-DATE
- AVAILABLE
- AGE
- IMAGES
# k9sのプラグイン設定(カスタムコマンドを追加)
# ~/.config/k9s/plugins.yaml
# kubectl top nodeをk9sから実行するプラグイン例
plugins:
node-top:
shortCut: Shift-T
description: "kubectl top node"
scopes:
- nodes
command: kubectl
background: false
args:
- top
- node
- --use-protocol-buffers
# Podのリソース使用量をwatch
watch-pod-resources:
shortCut: Ctrl-W
description: "watch kubectl top pods"
scopes:
- pods
command: sh
background: false
args:
- -c
- "watch -n1 kubectl top pods -n $NAMESPACE"
Headlamp
2020年に公開されたGo/TypeScript製のOSS Kubernetes WebUIです。GitHubスター2k+。プラグインシステムによる拡張が可能な軽量WebUIで、kubeconfigを自動検出してブラウザからK8sクラスタを操作できます。Electronなどのデスクトップアプリインストールが不要で、Helmで社内K8sクラスタにデプロイして全員がブラウザから利用できます。Fluxの可視化・Backstage統合プラグインが提供されています。
# Headlampをローカルで起動(デスクトップ版)
# macOS
brew install --cask headlamp
# Linux AppImage
wget https://github.com/headlamp-k8s/headlamp/releases/latest/download/Headlamp-linux-x86_64.AppImage
chmod +x Headlamp-linux-x86_64.AppImage
./Headlamp-linux-x86_64.AppImage
# HeadlampをKubernetesクラスタ内にデプロイ(全員がブラウザから利用)
# Helmでのデプロイ
helm repo add headlamp https://headlamp-k8s.github.io/headlamp/
helm repo update
helm install headlamp headlamp/headlamp --namespace headlamp --create-namespace --set ingress.enabled=true --set ingress.hosts[0].host=k8s.yourcompany.com --set ingress.hosts[0].paths[0].path=/ --set ingress.ingressClassName=nginx
# サービスアカウントトークンの取得(認証用)
kubectl create serviceaccount headlamp-admin -n headlamp
kubectl create clusterrolebinding headlamp-admin --clusterrole=cluster-admin --serviceaccount=headlamp:headlamp-admin
TOKEN=$(kubectl create token headlamp-admin -n headlamp --duration=8760h)
echo $TOKEN
機能比較表
| 比較項目 | k9s | Lens | Headlamp |
|---|---|---|---|
| インターフェース | ターミナルUI | Electron GUI | WebUI |
| インストール | バイナリ1つ | Electronアプリ | Helmデプロイ可 |
| ショートカット | vim風キーバインド | GUI操作 | キーボード対応 |
| プラグイン | YAML設定 | Lens Extensions | React/TypeScript |
| マルチクラスタ | ✅ | ✅ | ✅ |
| リアルタイムログ | ✅ | ✅ | ✅ |
| GitHub Stars | 27k+ | 22k+ | 2k+ |
k9sでモニタリングするPodのカスタムメトリクスはDevOpsカテゴリ/categories/devopsのPrometheus+Grafanaダッシュボードで可視化します。K8sクラスタのIaCプロビジョニングにはDevOpsカテゴリ/categories/devopsのOpenTofu/Pulumiを使って再現性のあるクラスタ構築が可能です。
FAQ
Q. k9s・Lens・Headlampのどれを最初に学ぶべきですか?
A. 役割・用途によって推奨が変わります。インフラ/DevOpsエンジニア(ターミナル操作に慣れている): k9s一択。.kube/configがあれば即起動でき、kubectlの操作をほぼ全て代替できる。速度が最速。フルスタックエンジニア(kubectl初めて): Lensが最も直感的なGUI。Podの状態をダブルクリックで確認できる。チーム全員でK8s管理したい: HeadlampをHelmでクラスタ内にデプロイして全員がブラウザからアクセス。3つとも無料・OSSなので「まずk9sを試して、チーム共有にHeadlampを追加」が最もコストパフォーマンスが高いです。
Q. k9sでCrashLoopBackOffのPodをデバッグする手順は?
A. k9s内での手順: ①:podでPod一覧を開く②CrashLoopBackOffのPodを選択→dでdescribeを確認(Events欄にOOMKilledやExitCodeが表示)③lでログを確認(前回のクラッシュログはpでprevious logs)④メモリ不足の場合: :deployでDeploymentを選択→eで編集→resources.limits.memoryを増やす⑤設定ミスの場合: :cmでConfigMapを確認→eで編集→該当Podをctrl+dで削除して自動再起動させる。
Q. k9sで複数のK8sクラスタを切り替えるには?
A. kubeconfigに複数のcluster/context設定がある場合、k9s内で:ctxコマンドを入力するとコンテキスト一覧が表示されます。選択してEnterで即切り替えができます。コマンドラインからは: k9s --context staging-clusterで特定クラスタを指定して起動します。複数のkubeconfigファイルを使う場合は環境変数KUBECONFIG=~/.kube/config:~/.kube/staging-configで複数ファイルをマージして使えます。
Q. HelmでK8sにアプリをデプロイしてk9sで監視するワークフローは?
A. 標準的なワークフロー: ①helm install myapp ./charts/myapp -n productionでデプロイ②k9sを別ターミナルで起動③:pod -n productionでProductionのPodをウォッチ④PodがRunningになるまでステータスを確認⑤lでアプリのログをリアルタイムストリーミング⑥問題があれば:events -n productionでKubernetesイベントを確認。CI/CDのGitHub ActionsでHelmデプロイ→Slackにデプロイ完了通知→k9sでモニタリングが標準的な運用フローです。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| ターミナル操作・最速デバッグ・DevOps | k9s |
| GUIで操作・ビジュアルでK8s学習 | Lens |
| チーム全員が使えるWebUI・拡張性 | Headlamp |