Kubernetesダッシュボード比較:Lens vs k9s vs Headlamp でK8sクラスターをGUI管理する
オープンソースラボ編集部 ・ 2026年6月13日
Kubernetesダッシュボード比較:Lens vs k9s vs Headlamp でK8sクラスターをGUI管理する
kubectl CLIだけでKubernetesを管理するのは複雑です。Lens・k9s・Headlampは視覚的にPod・Deployment・Service・Ingressを管理し、ログ・メトリクス・イベントをリアルタイムで確認できます。
Kubernetesダッシュボードが必要な場面
- Pod障害の診断: Crashしているコンテナのログをすぐに確認したい
- リソース消費の監視: CPUやメモリを食いすぎているPodを一覧で確認したい
- スケールアウト: ReplicaSetのレプリカ数をGUIでサクッと変えたい
- Port Forward: ローカルから特定のサービスにアクセスするポートフォワードを手軽にしたい
- 複数クラスター管理: 本番・ステージング・開発クラスターを切り替えて管理したい
主要ツールの概要
Lens(OpenLens)
Electron + React製のクロスプラットフォームKubernetesIDEです。最も機能が豊富で、GitHubスター22k+(OpenLens fork含む)。元はOSS(MIT)でしたが、Lens本体は2023年以降クローズドになり、OpenLensがMITフォークとして維持されています。
# OpenLens(無料フォーク)のインストール
# macOS
brew install --cask openlens
# またはGitHub Releasesから直接ダウンロード
# https://github.com/MuhammedKalkan/OpenLens/releases
# kubectlで複数クラスターのkubeconfigを設定(Lensがこれを読み込む)
# GKEクラスターを追加
gcloud container clusters get-credentials my-cluster --region asia-northeast1 --project my-gcp-project
# EKSクラスターを追加
aws eks update-kubeconfig --name my-cluster --region ap-northeast-1
# ローカルクラスター(Kind)
kind create cluster --name dev
kubectl cluster-info --context kind-dev
# kubeconfigの確認
kubectl config get-contexts
# Lensで確認するDeploymentの例
apiVersion: apps/v1
kind: Deployment
metadata:
name: next-app
namespace: production
labels:
app: next-app
version: "1.0.0"
spec:
replicas: 3
selector:
matchLabels:
app: next-app
template:
metadata:
labels:
app: next-app
spec:
containers:
- name: next-app
image: my-registry/next-app:latest
ports:
- containerPort: 3000
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: app-secrets
key: database-url
readinessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
httpGet:
path: /api/health
port: 3000
initialDelaySeconds: 30
periodSeconds: 10
# Lensで「Port Forward」をGUIから設定する手順の等価コマンド
# LensのUIでPodを右クリック → Port Forward → ローカルポートを指定
# 同等のkubectl操作
kubectl port-forward pod/next-app-6d8f9b7c4-x9v2k 3000:3000 -n production
# Lensでログを表示する等価操作
kubectl logs -f next-app-6d8f9b7c4-x9v2k -n production --tail=100
# Lensでシェルアクセスする等価操作
kubectl exec -it next-app-6d8f9b7c4-x9v2k -n production -- /bin/sh
k9s
ターミナル上で動くTUIツール(Text-based UI)です。GUIアプリなしでターミナルだけでKubernetesを操作でき、キーボードショートカット中心で非常に高速です。GitHubスター26k+で最も人気なK8sターミナルツール。
# k9sのインストール
# macOS
brew install k9s
# Linux
curl -LO https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz
tar -xzf k9s_Linux_amd64.tar.gz
sudo mv k9s /usr/local/bin/
# Windows
winget install k9s
# k9sの起動
k9s
# 特定のクラスターコンテキストで起動
k9s --context gke_my-project_asia-northeast1_my-cluster
# 特定のネームスペースで起動
k9s -n production
# k9sの主なキーボードショートカット(UIで `:` を押してコマンド入力)
:pods # Podの一覧
:deployments # Deploymentの一覧
:services # Serviceの一覧
:ingresses # Ingressの一覧
:nodes # Nodeの一覧
:namespaces # Namespace切り替え
:secrets # Secretの一覧
:configmaps # ConfigMapの一覧
# Pod一覧画面でのキー操作
l # ログを表示(logs)
s # シェルアクセス(exec)
d # 詳細を表示(describe)
e # YAMLをエディタで開いて編集
ctrl-d # Pod削除
ctrl-k # リソースのkill
/ # フィルタ・検索
0-9 # ネームスペース切り替え(0=all)
# k9sの設定ファイル(~/.config/k9s/config.yaml)
k9s:
liveViewAutoRefresh: true
refreshRate: 2 # 2秒ごとに更新
maxConnRetry: 5
enableMouse: false # マウス操作を有効化(TUI内)
headless: false
logoless: false
crumbsless: false
readOnly: false # falseなら編集・削除が可能
noIcons: false
# カラーテーマの設定
ui:
skin: dracula # ~/.config/k9s/skins/ にテーマファイルを置く
reactive: false
noIcons: false
Headlamp
CNCF(Cloud Native Computing Foundation)サンドボックスプロジェクトのOSSブラウザベースKubernetesダッシュボードです。デスクトップアプリまたはクラスター内にデプロイして使います。
# Headlampをデスクトップアプリとしてインストール
# macOS
brew install --cask headlamp
# クラスター内にデプロイ(Helm)
helm repo add headlamp https://headlamp-k8s.github.io/headlamp/
helm install headlamp headlamp/headlamp -n kube-system
# ポートフォワードでアクセス
kubectl port-forward svc/headlamp 4466:80 -n kube-system
# → http://localhost:4466 でアクセス
# デプロイ後のアクセストークン取得(Kubernetesサービスアカウント)
kubectl create serviceaccount headlamp-admin -n kube-system
kubectl create clusterrolebinding headlamp-admin --clusterrole=cluster-admin --serviceaccount=kube-system:headlamp-admin
kubectl create token headlamp-admin -n kube-system
// Headlampのプラグイン開発(TypeScript/React)
// カスタムダッシュボードパネルを作成できる
import {
registerRoute,
registerSidebarEntry,
} from "@kinvolk/headlamp-plugin/lib";
import { SectionBox } from "@kinvolk/headlamp-plugin/lib/components/common";
// カスタムルートの登録
registerRoute({
path: "/my-team-dashboard",
parent: null,
name: "My Team Dashboard",
sidebar: "my-team-dashboard",
component: () => (
<SectionBox title="チームダッシュボード">
<p>デプロイ状況・アラート・コスト情報をここに表示</p>
</SectionBox>
),
});
// サイドバーエントリの登録
registerSidebarEntry({
parent: null,
name: "my-team-dashboard",
label: "チームダッシュボード",
url: "/my-team-dashboard",
icon: "mdi:view-dashboard",
});
機能比較表
| 比較項目 | OpenLens | k9s | Headlamp |
|---|---|---|---|
| UIタイプ | デスクトップGUI | ターミナルTUI | Webブラウザ |
| ライセンス | MIT(OpenLens fork) | Apache 2.0 | Apache 2.0 |
| インストール | デスクトップアプリ | CLIバイナリ | デスクトップ or クラスター内 |
| 複数クラスター | ✅ | ✅ | ✅ |
| ログ表示 | ✅ リアルタイム | ✅ リアルタイム | ✅ |
| シェルアクセス | ✅ | ✅ | ✅ |
| ポートフォワード | ✅ GUI | ✅ キーボード | ✅ |
| メトリクス | ✅ CPU/Mem | ✅ CPU/Mem | ✅ CPU/Mem |
| RBAC管理 | ✅ | ✅ 読み取り | ✅ |
| Helm管理 | ✅ | ✅ | ✅ |
| プラグイン拡張 | ✅ Lens Store | ❌ | ✅ カスタムプラグイン |
| チーム共有 | ❌ | ❌ | ✅ (クラスター内デプロイ) |
| 操作スピード | 普通 | 超高速 | 普通 |
| GitHub Stars | 22k+ | 26k+ | 2.5k+ |
Kubernetes管理ツールはDevOpsの効率化に直結します。コンテナオーケストレーション周辺のツール比較はdevopsカテゴリ(/categories/devops)にもまとめています。CI/CDパイプラインとの統合についてはCI/CD自己ホストツールの比較記事(/tools/woodpecker-ci)もご覧ください。
FAQ
Q. kubectl dashboardとLens/k9sはどう違いますか?
A. kubectl dashboard(kubernetes/dashboardプロジェクト)はクラスター内にデプロイするWebUI型の公式Kubernetesダッシュボードです。セットアップにクラスターへのデプロイが必要で、認証設定が複雑です。一方、LensとOpenLensはローカルのkubeconfigを直接読んでクラスターに接続するデスクトップアプリで、セットアップが簡単(インストールするだけ)です。k9sも同様にローカルのkubeconfigを使います。チーム全員がアクセスするダッシュボードが必要な場合はHeadlampやkubernetes/dashboardのクラスターデプロイが適切で、個人やチームの日常的なクラスター操作にはLens/k9sが便利です。
Q. 本番クラスターへのLens/k9sのアクセスはセキュリティ的に大丈夫ですか?
A. ローカルにkubeconfigを持つことはセキュリティリスクがあります。対策: ①kubeconfigをなるべく最小権限のKubernetesサービスアカウントトークンで発行する(cluster-adminではなく必要最小限のClusterRole)、②k9sはreadOnly: trueモードで起動して誤操作防止、③kubeconfigファイルのパーミッションをchmod 600 ~/.kube/configに設定する、④AWS EKS・GKEの場合はkubeconfigの代わりにSSO認証(aws eks get-token・gcloud container clusters get-credentials)を使うとトークンの有効期限が短く安全、⑤本番環境はGitOps(ArgoCD・Flux)を使ってkubectl/GUI経由の直接変更を防ぐ構成が理想的です。
Q. k9sで誤ってPodを削除してしまった場合の対処法は?
A. ctrl-dでPod削除を試みるとk9sは確認ダイアログを表示するので、誤操作のリスクは低いです。万が一削除してしまっても、DeploymentやReplicaSetに管理されているPodは自動的に再作成されます(ただし、Pod直下で直接作成したPodは再作成されない)。重要なのはStatefulSetの場合で、PVC(PersistentVolumeClaim)はDelete操作に含まれないことが多いため、データは保持されます。本番環境ではreadOnly: trueをk9sの設定に入れておくか、本番クラスターの操作にはより明示的なkubectlコマンドを使うことを推奨します。
Q. HelmリリースをLensやk9sで管理するにはどうしますか?
A. Lensの場合: 左サイドバー → Apps → Helm Releases で全リリースが一覧表示されます。GUIからアップグレード・ロールバック・アンインストールが可能です。k9sの場合: :helm または :hr でHelmリリース一覧が表示されます。Headlampの場合: メニューバーのHelmセクションからリリース・チャート・リポジトリを管理できます。いずれもhelm list・helm upgrade・helm rollbackのラッパーですが、GUIで確認できると変更前後の差分確認が楽になります。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 日常のクラスター管理 + GUI | OpenLens |
| CLI/ターミナル環境重視 + 高速操作 | k9s |
| チーム共有ダッシュボード | Headlamp |
| プラグインでカスタマイズ | OpenLens または Headlamp |