156
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

k9s使い方まとめ

Last updated at Posted at 2020-10-01

k9sとは

k9sとは、kubernetesクラスタをリッチなターミナルUIで操作するためのソフトウェアになります。

 ____  __.________
|    |/ _/   __   \______
|      < \____    /  ___/
|    |  \   /    /\___ \
|____|__ \ /____//____  >
        \/            \/

ほんの一例ですが、以下のようなオペレーションを簡単に行うことができます。

  • 特定podの状態を確認する
  • エラーが発生しているコンテナのログを確認する
  • 特定のpodを削除する
  • Deploymentのmanifestを編集する
  • 特定のワークロードをロールアウトリスタートする

あまりにも便利すぎて、素のkubectlコマンドの使い方を忘れるくらい素敵なツールとなっています。

本記事ではそんなk9sの基本的な使い方をまとめました。

利用しているk9sのバージョンは0.22.1です。
バージョンによっては紹介しているオペレーションができない可能性もありますのでご了承ください。

k9sを起動する

インストール方法はこちら

基本コマンド

$ k9s

context指定でk9sを起動

$ k9s --context xxxxx

namespaceを指定してk9sを起動

$ k9s -n xxxxx

readonlyでk9sを起動。オペレーションミスによる事故を防ぐことができます

$ k9s --readonly

リソースのナビゲーション

k9sを立ち上げると以下のように、リソース一覧が表示されます。
Screen Shot 2020-09-25 at 19.04.19.png

基本的な操作は、任意のリソースを検索し、調査や特定のオペレーションを行うといったことをするかと思います。?でヘルプが表示されますので、操作に迷った際はご利用ください。

:をタイプすると、検索窓のようなUIが表示されます。非表示にする場合はESCをタイプします。
この検索窓にどういったリソース名をタイプできるかはctrl-aで一覧表示することができます。

ほんの一部ですが、頻繁に選択するリソースを紹介します。

コマンド アクション
:context, :ctx コンテキスト一覧を表示する
:node, :no ノード一覧を表示する
:pod, :po pod一覧を表示する
:deployment, :deploy deployment一覧を表示する
:namespace, :ns namespace一覧を表示する
:service, :svc service一覧を表示する
:statefulset, :sts statefulset一覧を表示する
:daemonset, :ds daemonset一覧を表示する
:hpa hpaの一覧を表示する

検索窓にキーワードを入力する際、リソースの後にnamespaceを入力する事で指定したnamespaceに紐づくリソースを表示することができます。つまりnamespaceとリソースの選択をまとめて行うことができます。例えば:pod defaultと打ち込むと、default namespaceのpod一覧が表示されることになります。

リソースの選択

一覧表示されるリソースはj kでカーソルを動かして選択ができます。
Enterを押すと、そのリソースに紐づく情報が表示されます。

例えば、namespace一覧に表示される特定のnamespaceを選択してEnterを押すと
そのnamespaceに紐づくpod一覧が表示されます。
さらにpod一覧から特定のpodを選択しEnterを押すと、そのpodに存在するコンテナが表示されるといった具合です。

最終的にはコンテナを選択することで、そのコンテナのログを表示することができます。

このようにリソースを選択・ドリルダウンを繰り返すことで目的となるオペレーションを実施していきます。
ドリルダウンした後、ひとつまえのリソース一覧に戻る場合はESCを入力します。

コマンド アクション
j,k カーソルを移動
Enter 選択肢したリソースに紐づく情報を表示する
ESC ひとつ前のリソースに戻る
ctrl-w 表示するフィールドを増やす

リソースの絞り込み

リソース一覧に大量にリソースが表示される場合、/で表示される検索窓にキーワードを入力することで一致するリソースを絞り込むことができます。
Screen Shot 2020-09-25 at 18.55.49.png
絞り込む対象は表示されているリソースの情報全てが対象になりますので、
リソースの名前で絞り込むのはもちろんですが、そのStatusや、IPアドレス、Node等で絞り込むことができます。

ラベルによる検索は-l xxx=xxxxxxと入力することで可能になります。
例えばappラベルがlifullのリソースを検索する場合は-l app=lifullと入力することになります。

ctrl-zを押すと、異常なリソースのみの表示に切り替えることができます。
Screen Shot 2020-09-25 at 19.06.31.png
:pod allctrl-zを組み合わせることで、異常なpodをすぐに発見できたりします。

コマンド アクション
/keyward キーワードでリソースを絞り込む
/ -l xxx=xxxxx ラベルでリソースを絞り込む
ctrl-z 異常なリソースのみ表示する
u リソース(configmapやsecret)を使用しているリソースの検索

リソースの並び替え

リソース一覧では以下のショートカットキーにより、リソースをソートすることが可能です。
CPUやメモリを大量に消費しているPodを検索するときなどに便利です。

コマンド アクション
shift-n 名前でソート
shift-c CPU使用量でソート
ctrl-x CPU使用率(Limit)でソート
shift-x CPU使用率(Request)でソート
shift-m メモリ使用量でソート
ctrl-q メモリ使用率(Limit)でソート
shift-z メモリ使用率(Request)でソート
shift-a Ageでソート
shift-s Statusでソート

その他IPアドレスやNodeなどでのソートも可能です。
詳しくは?で、確認してください。

オペレーション

リソースを特定したら、対象に対して以下のようなオペレーションが実行可能です。
readonlyでk9sを起動した場合は、実行不可なオペレーションもありますのでご注意ください。

ログの確認

lでコンテナのログを確認します。
どのリソースを対象にするかでどの範囲のログが表示されるか変わります。
例えば、podに対してlを押すと、そのpodのすべてのコンテナのログが表示されます。
podからさらにドリルダウンして、コンテナを対象にした場合、そのコンテナのログだけを表示することができます。
deploymentやstatefulsetといったワークロード単位に紐づくコンテナのログを表示することも可能です。

ログを表示すると以下のような画面が表示されます。
Screen Shot 2020-09-28 at 18.40.45.png

この画面では、k l j hで画面をスクロールさせてログを確認していくことになります。デフォルトでは新たなログがどんどん追加されていきますが、sでその挙動を停止できます。
ログをすばやく送りたい場合は、ctrl-f ctrl-bを利用すると良いでしょう。

特定のエラーを検索したい場合は/で表示される検索窓にキーワードを入力して検索してください。

tで左側にタイムスタンプを表示できるので、時間が書いてないようなログでは重宝します。
Screen Shot 2020-09-28 at 18.42.05.png

コマンド アクション
s 新たなログの読み込みを停止する
w 画面から表示しきれないログを折り返して画面内に収める
t ログのタイムスタンプを表示する
f フルスクリーンでログを表示する
k, l, j, h 上、右、下、左にスクロール
ctrl-f スクロールダウン
ctrl-b スクロールアップ
g 最上部のログへジャンプ
G 最下部のログへジャンプ
/ 検索モード
c ログのコピー
space マークをつける

リソースの確認・操作

k9sでは特定のリソースやワークロードに対して様々な操作を実行できます。

dで、kubectl describeと同じ結果が表示されます。
Screen Shot 2020-09-28 at 18.52.25.png

yにより、そのリソースのマニフェストを参照することができます。

ctrl-dで選択したリソースを削除することができます。削除前にダイアログが表示されるため、間違ってリソースを削除するような事態にはなりません。
Screen Shot 2020-09-28 at 18.49.09.png

ctrl-kは問答無用でリソースをKillするコマンドになりますのでお気をつけください。

eは、選択したリソースのマニフェストを編集モードにより編集することができます。直接マニフェストを編集する行為は好ましくありませんが、一時的にマニフェストを手軽く書き変えたい場合などに役に立ちます。
Screen Shot 2020-09-28 at 18.47.36.png

ctrl-tでワークロードのロールアウトリスタートを実行します。deploymentやstatefulsetなどのワークロードを選択している場合にのみ有効です。
Screen Shot 2020-09-28 at 18.53.12.png

以下、よく使うコマンドをまとめました。

コマンド アクション
d リソースの詳細を表示(kubectl describe)
y リソースのマニフェストを表示
e マニフェストの編集(kubectl edit)
ctrl-d リソースの削除
ctrl-t ワークロードのロールアウトリスタート
l ログを確認する(kubectl logs)
space リソースを選択する(複数選択可能)

シェルの実行

コンテナを選択しsを押すことでシェルを実行することができます。
これはkubectl exec -it xxxx -c xxxx -- /bin/shのような操作ができると思ってください。

k9sの終了

ctrl-cもしくは:quitでk9sを終了します。

その他

クラスタのダッシュボードを表示する

:pulseと入力すると、クラスターに関するダッシュボードが表示されます。
Screen Shot 2020-09-28 at 18.54.28.png

deploymentやstatefulsetなどのワークロードがいくつデプロイされているか、podは何台あるか、などの情報が一目でわかるようになっています。
タブでそれぞれの情報にフォーカスすることができますので、そのままドリルダウンでリソースの情報を掘り下げる事が可能です。

各リソースの依存関係を表示

:xray podsにより、リソースの依存関係を可視化する事ができます。
Screen Shot 2020-09-28 at 18.56.29.png

とあるpodは、どのようなPVがマウントされているのか、どのようなconfigmapを参照しているのか、といった情報を一気に確認できるでしょう。

クラスタを検証する

:popeyeを入力することで、k9sがクラスタをスキャンし潜在的な問題を報告し、スコアリングしてくれます。
Screen Shot 2020-09-28 at 18.57.54.png

root権限でコンテナが実行されている、limitが指定されていないなど、設定の不備をレポートしてくれるので、クラスタの健全性を保持するのに役に立つでしょう。
Screen Shot 2020-09-28 at 18.58.14.png

最後に

本記事では、k9sの基本的な使い方、よくつかうであろうコマンドを紹介させたいただきました。
今回は紹介できませんでしたが、設定ファイルをカスタマイズしたりプラグインを導入することでさらにk9sを便利に使うことも可能ですので、ご興味のある方は本家のドキュメントをご参考ください。

参考

https://github.com/derailed/k9s
https://k9scli.io/

156
125
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
156
125

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?