AI

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",
});

機能比較表

比較項目OpenLensk9sHeadlamp
UIタイプデスクトップGUIターミナルTUIWebブラウザ
ライセンスMIT(OpenLens fork)Apache 2.0Apache 2.0
インストールデスクトップアプリCLIバイナリデスクトップ or クラスター内
複数クラスター
ログ表示✅ リアルタイム✅ リアルタイム
シェルアクセス
ポートフォワード✅ GUI✅ キーボード
メトリクス✅ CPU/Mem✅ CPU/Mem✅ CPU/Mem
RBAC管理✅ 読み取り
Helm管理
プラグイン拡張✅ Lens Store✅ カスタムプラグイン
チーム共有✅ (クラスター内デプロイ)
操作スピード普通超高速普通
GitHub Stars22k+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 listhelm upgradehelm rollbackのラッパーですが、GUIで確認できると変更前後の差分確認が楽になります。

まとめ

ユースケース推奨ツール
日常のクラスター管理 + GUIOpenLens
CLI/ターミナル環境重視 + 高速操作k9s
チーム共有ダッシュボードHeadlamp
プラグインでカスタマイズOpenLens または Headlamp

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。