k9sの使い方完全ガイド【インストールから応用まで】
Kubernetesクラスタの管理に、あなたはどんなツールを使っていますか?
もしあなたが、日々kubectlコマンドを叩き、複数のターミナルウィンドウを行き来しているなら、想像してみてください。
例えば、開発中のアプリケーションに問題が発生したとします。kubectl get podsでPod一覧を確認し、kubectl logs <pod名>でログを追いかけ、さらにkubectl describe pod <pod名>で詳細なイベント履歴を見る。
これら全てを、必要なときに必要な情報を、たった一つの画面で、しかもリアルタイムに確認できたらどうでしょうか?
kubectlを多用する日々は、時に情報の断片化と操作の煩雑さをもたらします。
多くのコマンドを記憶し、タイプミスに気をつけ、そして常に最新の状態を追いかける手間があります。
本番環境で障害が発生した際、一刻を争う状況で、これらの操作がボトルネックになることも少なくありません。
しかし、k9sがあれば、その世界は一変します。
まるで統合開発環境(IDE)のように、Kubernetesクラスタ内のあらゆるリソースを、たった一つのターミナル画面で直感的に操作できます。
リアルタイムに更新される情報、キーボードショートカット一つで切り替わるビュー、そしてログのストリーミング。 k9sは、あなたのKubernetes操作を、より効率的で快適なものに変えてくれるでしょう。
本記事では、このk9sのインストールから基本的な使い方、さらには実際の開発で役立つ応用例まで、網羅的にご紹介します。
あなたのKubernetes管理を次のレベルへと引き上げるための、強力なガイドとなるはずです。
k9sとは
k9sは、Kubernetesクラスタをターミナルユーザーインターフェース(TUI)で管理するためのツールです。
「Kubernetes CLI To Manage Your Clusters In Style!」というキャッチフレーズの通り、kubectlコマンドの実行結果を視覚的に、かつ対話的に操作できるのが特徴です。
このプロジェクトの目的は、Kubernetesクラスタ内のアプリケーションのナビゲーション、監視、管理を容易にすることです。k9sはKubernetesクラスタの変更を継続的に監視します。
そして、監視対象のリソースに対して、さまざまなコマンドを実行できる機能を提供します。
k9sは、特定の企業が開発したツールではありません。
OSS(オープンソースソフトウェア)として、コミュニティの支援と開発者の献身によって維持されています。
あなたのKubernetesでの日々の作業を快適にし、生産性を向上させるために、このツールは無償で提供されています。
インストール方法
k9sは、macOS、Linux、Windowsの主要なプラットフォームで利用可能です。
最も一般的なインストール方法をいくつか紹介します。
macOS / Linux (Homebrew)
Homebrewを使用すると、macOSとLinuxの両方で簡単にインストールできます。
brew install derailed/k9s/k9s
Linux (Snap)
Snapパッケージマネージャーを利用しているLinuxディストリビューションでは、以下のコマンドでインストールできます。
snap install k9s --devmode
Linux (Ubuntu)
UbuntuなどのDebianベースのシステムでは、.debパッケージをダウンロードしてインストールすることも可能です。
wget https://github.com/derailed/k9s/releases/latest/download/k9s_linux_amd64.deb
sudo apt install ./k9s_linux_amd64.deb
rm k9s_linux_amd64.deb
Linux (Fedora)
Fedora 42以降では、dnfコマンドでインストールできます。
dnf install k9s
Windows (Winget)
Windows環境では、Wingetパッケージマネージャーを使ってインストールできます。
winget install derailed.k9s
バイナリからのインストール
各OS向けのバイナリファイルは、GitHubのリリースページから直接ダウンロードすることも可能です。
ダウンロードしたアーカイブを展開し、k9s実行ファイルをPATHの通ったディレクトリに配置してください。
基本的な使い方
k9sの操作は非常にシンプルです。
最低限のキーバインドを覚えるだけで、すぐにクラスタ管理を始められます。
1. k9sの起動
ターミナルで以下のコマンドを実行するだけです。
現在kubectlが接続しているKubernetesクラスタに接続し、Podの一覧が表示されます。
k9s
2. リソースの切り替え
k9sを起動すると、デフォルトでPodの一覧が表示されます。
他のリソースに切り替えるには、:(コロン)を入力してコマンドモードに入り、リソース名を入力します。
デプロイメントを表示:
:と入力後、deploymentsと入力しEnter。:deploymentsサービスを表示:
:と入力後、servicesと入力しEnter。:services名前空間(Namespace)の切り替え:
:と入力後、nsと入力しEnter。 名前空間の一覧が表示されたら、矢印キーで選択しEnterを押します。:ns
3. リソースのナビゲーションと詳細表示
一覧表示されているリソース間を移動するには、矢印キー(↑↓)を使います。
リソースの詳細情報表示: 選択しているリソースの行で
dキーを押すと、kubectl describeと同様の詳細情報が表示されます。ログの表示: Podを選択し
lキーを押すと、そのPodのログがリアルタイムでストリーミング表示されます。 複数のコンテナがあるPodでは、ログを表示するコンテナを選択できます。YAML定義の表示と編集: リソースを選択し
yキーを押すと、そのリソースのYAML定義が表示されます。eキーを押すと、YAML定義をエディタで編集できます。 編集を保存すると、クラスタにその変更が適用されます。
4. 終了
k9sを終了するには、Ctrl+cまたは q キーを押します。
これらの基本的な操作を覚えるだけで、k9sを使ったKubernetes管理の効率が格段に向上するでしょう。
便利な使い方・応用例 3選
k9sは基本的な操作だけでも強力ですが、さらに便利な機能を活用することで、開発や運用をよりスムーズに進められます。
ここでは、特に役立つ応用例を3つご紹介します。
1. ポートフォワーディングでローカル開発を加速
クラスタ内で動作するサービスに、ローカル環境から直接アクセスしたい場面はよくあります。
例えば、開発中のフロントエンドアプリケーションから、クラスタ内のバックエンドサービスを呼び出したい場合などです。 k9sを使えば、kubectl port-forwardコマンドをタイプすることなく、直感的にポートフォワーディングを設定できます。
- 操作方法:
k9sでポートフォワードしたいPodを選択します。Ctrl+fを押します。- ポートフォワーディング設定画面が表示されます。 デフォルトのポート設定が提示されますが、必要に応じてローカルポートとリモートポートを変更できます。
Enterキーを押すと、ポートフォワーディングが開始されます。
ポートフォワーディングが開始されると、k9sのステータスバーにその情報が表示されます。
これにより、ローカル環境のアプリケーションから、指定したポート経由でクラスタ内のサービスにアクセスできるようになります。
デバッグや開発中の検証作業が格段に楽になるでしょう。
2. カスタムプラグインで作業を自動化
k9sのカスタムプラグイン機能を使えば、k9sのUIから直接、任意のシェルコマンドやkubectlコマンドを実行できます。
これにより、特定のデバッグコマンドや、クラスタ固有の管理タスクをワンクリックで実行できるようになります。
例えば、特定のPodのメトリクスを瞬時に確認したり、アプリケーション固有の診断スクリプトを実行したりできます。
カスタムプラグインは、~/.config/k9s/plugins.yamlファイルに定義します。
# ~/.config/k9s/plugins.yaml の例
apiVersion: k9s.io/v1alpha1
kind: Plugin
metadata:
name: debug-pod
spec:
command: bash
args:
- -c
- |
kubectl exec -it {{ .Name }} -n {{ .Namespace }} -- bash || \
kubectl exec -it {{ .Name }} -n {{ .Namespace }} -- sh
description: "Connect to pod shell"
scopes:
- pod
shortCut: Shift+s # Shift+s でシェル接続
---
apiVersion: k9s.io/v1alpha1
kind: Plugin
metadata:
name: view-metrics
spec:
command: bash
args:
- -c
- |
echo "Fetching metrics for pod {{ .Name }}..."
kubectl top pod {{ .Name }} -n {{ .Namespace }} --containers
description: "View pod metrics"
scopes:
- pod
shortCut: m # m でメトリクス表示
- プラグインの適用と実行: 上記のYAMLファイルを保存後、
k9sを再起動します。 Pod一覧画面で、対象のPodを選択し、定義したshortCutキー(例:Shift+sやm)を押すだけでプラグインが実行されます。{{ .Name }}や{{ .Namespace }}のようなプレースホルダーを使うことで、選択中のリソース名や名前空間をコマンドに渡せます。
この機能は、特に繰り返し行う作業や、複雑なコマンドを記憶する手間を省くのに非常に有効です。
3. 効率的なリソース検索とフィルタリング
大規模なKubernetesクラスタでは、多くのリソースがデプロイされています。
目的のPodやデプロイメントを素早く見つけるには、検索とフィルタリング機能が不可欠です。 k9sは、これらの機能を非常に強力にサポートしています。
リソースの検索: 任意のリソースビューで
/キーを押すと、検索バーが表示されます。 ここにキーワードを入力すると、リアルタイムで一覧がフィルタリングされます。 例えば、my-appと入力すれば、「my-app」を含むPodだけが表示されます。 正規表現も利用できるため、より高度な検索も可能です。リソースのソート:
Ctrl+sキーを押すと、現在表示されているリソースを特定のカラムでソートできます。 例えば、PodのCPU使用率やメモリ使用量でソートし、リソースを多く消費しているPodを特定するのに役立ちます。 ソートの基準となるカラムは、左右の矢印キーで切り替えることができます。
これらの機能を使うことで、膨大なリソースの中から必要な情報を素早く見つけ出し、トラブルシューティングや監視の時間を大幅に短縮できます。
他ツールとの組み合わせ
k9sは単体でも強力ですが、他のツールと組み合わせることで、その真価をさらに発揮します。
既存のKubernetesエコシステムと連携させることで、ワークフロー全体を最適化できます。
kubectl
k9sはkubectlの可視化ツールであり、その操作の多くは内部でkubectlコマンドに変換されています。
しかし、k9sが提供しないより複雑な操作や、スクリプトでの自動化が必要な場合は、kubectlを直接使うことになります。
例えば、k9sでリソースの状態を把握し、特定のPodに対して複雑なexecコマンドを実行する際にはkubectlに切り替える、といった使い分けが考えられます。k9sでリソースのYAML定義をyキーで表示し、それをコピーしてkubectl apply -f -で適用するといった連携も可能です。
Helm
HelmはKubernetesアプリケーションをパッケージ化し、デプロイするためのツールです。
Helmでデプロイされたアプリケーションは、複数のデプロイメントやサービス、ConfigMapなどで構成されます。 k9sを使えば、Helmでデプロイしたリリースに含まれるすべてのKubernetesリソースを、一つの画面で簡単に監視できます。
例えば、k9sでdeploymentsビューを開き、特定のHelmリリースに属するデプロイメントの状態をリアルタイムで確認するといった連携です。
また、k9sのカスタムプラグインを使って、Helmチャートのアップグレードやロールバックコマンドを直接実行する設定も考えられます。
Prometheus / Grafana
PrometheusとGrafanaは、Kubernetesクラスタのメトリクス監視と可視化のデファクトスタンダードです。k9sはリソースの「状態」を素早く概観するのに優れています。
例えば、PodがCrashLoopBackOff状態になっていることをk9sで検知したとします。
その詳細な原因(CPU使用率の急増、メモリリークなど)を特定するには、Prometheusで収集されたメトリクスをGrafanaダッシュボードで確認するのが効果的です。 k9sのカスタムプラグインを活用し、選択中のPodや名前空間に対応するGrafanaダッシュボードをブラウザで開くショートカットを設定することも可能です。
これにより、k9sでの一次調査から、より詳細なメトリクス分析へのスムーズな移行が実現します。
よくある設定・カスタマイズ
k9sは非常に柔軟なカスタマイズが可能です。
設定ファイルを編集することで、あなたの作業スタイルに合わせた最適な環境を構築できます。
主な設定ファイルは~/.config/k9s/ディレクトリに格納されます。
デフォルトの名前空間設定
k9s起動時に常に特定の名前空間を表示したい場合、~/.config/k9s/config.yamlを編集します。
# ~/.config/k9s/config.yaml
k9s:
cluster:
defaultNamespace: my-default-namespace # ここにデフォルトにしたい名前空間を指定
screenDumpDir: /tmp/k9s-screens
logoless: false
# ... その他の設定
defaultNamespaceの値を変更することで、k9s起動時に指定した名前空間のリソースが表示されるようになります。
カスタムキーバインド
既存のキーバインドを変更したり、新しいショートカットを追加したりできます。
これは~/.config/k9s/k9s.yamlに記述します。
例えば、Ctrl+eでイベントログを表示するのを、別のキーに変更する、あるいは特定のコマンドにショートカットを割り当てるといったことができます。
# ~/.config/k9s/k9s.yaml
k9s:
keyBindings:
<YourViewName>:
bindKeys:
- key: <Key> # 例: t
description: "My Custom Action"
command: <CommandName> # 例: toggleContainers
args: []
スキンの適用
k9sの見た目を変更する「スキン」を適用できます。
これにより、特定の環境(開発、ステージング、本番など)ごとに異なる色を設定し、誤操作を防ぐなどの工夫が可能です。
スキンファイルは~/.config/k9s/skin.yamlとして作成します。
# ~/.config/k9s/skin.yaml の例
k9s:
body:
fgColor: lightgray
bgColor: black
# ... その他の色設定
# 環境ごとに異なるスキンを定義し、config.yamlで切り替えることも可能
config.yaml内でskinプロパティを指定することで、使用するスキンファイルを指定できます。
# ~/.config/k9s/config.yaml
k9s:
skin: my-custom-skin # skin.yamlで定義したスキン名
# ... その他の設定
これらのカスタマイズを活用することで、k9sをあなたのKubernetes管理の中心ツールとして、さらに強力に活用できるでしょう。
今日からできる実行プラン
k9sの導入は、あなたのKubernetes管理を大きく変える第一歩です。
以下の3ステップで、今日からk9sを使い始めましょう。
ステップ1: k9sをインストールする
まずは、あなたのOSにk9sをインストールします。
前述の「インストール方法」セクションを参考に、最も適切な方法を選んでください。
Homebrewが利用できる環境であれば、brew install derailed/k9s/k9sが最も手軽です。
brew install derailed/k9s/k9s
ステップ2: k9sを起動し、主要なリソースを観察する
インストールが完了したら、早速k9sを起動してみましょう。
ターミナルでk9sと入力し、Enterキーを押します。
k9s
起動したら、以下の操作を試してみてください。
:を入力し、deploymentsと入力してデプロイメント一覧を表示する。:を入力し、servicesと入力してサービス一覧を表示する。- Pod一覧に戻り、矢印キーでPodを選択します。
- 選択したPodに対して
lキーを押し、ログをリアルタイムで確認します。 dキーを押し、Podの詳細情報を確認します。
ステップ3: ポートフォワーディングを試す
開発中のアプリケーションやサービスがある場合、ポートフォワーディングを試してみましょう。
Pod一覧からアプリケーションのPodを選択し、Ctrl+fキーを押します。
ローカルポートとリモートポートを指定し、Enterでフォワードを開始します。
これにより、ローカル環境からクラスタ内のサービスに直接アクセスできることを確認してください。
これらのステップを完了するだけで、k9sがあなたのKubernetes管理にどれほどの価値をもたらすかを実感できるはずです。
さらに深く使いこなすために、カスタムプラグインやスキンの設定にも挑戦してみてください。
参考文献
- K9s DevOps: Pros/cons And A Quick Tutorial
- Mastering K9s: The Ultimate Kubernetes CLI Tool for Efficiency
- GitHub - derailed/k9s
- K9s documentation