okadato の雑記帳

スタートアップでSREとしてはたらくokadatoの雑記です。

k9s で一歩進んだ Kubernetes クラスタマネジメントを🐶 Goodbye to kubectl!

はじめに

さて前回、Hipster Shop をとりあえず起動するところまで試してみました。



adservice-56d6b86b69-ps58x 1/1 Running 0 12m
cartservice-5b769fbcd-vghph 1/1 Running 0 12m
checkoutservice-76cf7d66c4-9cn26 1/1 Running 0 12m
currencyservice-676c45cbd8-sbndb 1/1 Running 0 12m
emailservice-554cd4f969-lt5hz 1/1 Running 0 12m
frontend-b8454cdfd-s7whb 1/1 Running 0 12m
loadgenerator-545785998f-b78cx 1/1 Running 0 12m
paymentservice-7945c44864-8jtsb 1/1 Running 0 12m
productcatalogservice-dc8b5785-2grmp 1/1 Running 0 12m
recommendationservice-b64fdd8c5-7gpw8 1/1 Running 0 12m
redis-cart-5f5479d755-ncsfn 1/1 Running 0 12m
shippingservice-64c4994bdd-xhlw9 1/1 Running 0 12m


上記 12個の Pod からなるマイクロサービスで、これらを操作するには各サービスの yaml ファイルをいじったり、ログをみたりしなくてはなりません。
個人的には Kubernetes の複雑さ・とっつきにくさを助長させる要素のひとつに、たくさんのファイルを行き来することや kubectl コマンド自体が抱える複雑さがあると考えています。


kubectl 、サブコマンドだけでなんと 27 項目あり、リソースタイプは 49 項目もある…もぅマヂ無理。モノリスカしょ…


と、いうわけで今回は k9s をインストールし kubectl コマンドなしにログの確認や各リソースの操作を行えるようにしていきます!



k9s is ナニ??

端的に説明すると、 Kubernetes クラスタの操作性を向上させるための CLI ツールです。



k9s 上から Kubernetes の各リソースに対し、以下のような操作を行うことが可能です。

  • ログの tail ができたり
  • 各リソース定義ファイルを編集できたり
  • shell を実行して操作ができたり
  • リソース自体の削除やプロセスの kill ができたりします!

etc, etc...


つまり既に動作中のリソースに関しては k9s 経由でわりとなんでもできちゃうのです!
kubectl コマンドを使わずともリソース操作が可能になるのはとっっってもありがたい!!

Goodbye to kubectl!!!

Hello k9s World!!!



f:id:okadato623:20191110062722p:plain
k9s ロゴのわんわんお(?)


ところでこのロゴはどうなのよ?もうちょっとかわゆくできなかったものか(´・ω・`)
(ちなみにぼくはこういうツールなどの語源がかなり気になるタチなのですが、なぜ k9s なのかはかるーく調べてもわかりませんでした…ぐやじい…)



導入導入〜

というわけで早速インストールします!MacOSの場合は brew コマンドで一発です。


brew tap derailed/k9s
brew install k9s


一発すぎてなにも言うことがない。便利な世の中だよ、ほんとにさ。



起動起動〜

早速起動してみましょう!k9s コマンドで起動します。
起動直後の画面では、現在使用中のクラスタの Pod 一覧を表示します。


f:id:okadato623:20191109204155p:plain


数えてみると、確かに12 個の Pod が稼働していますね。
各 Pod に対して行うことが可能な操作の一覧が画面上部のコマンド部分にまとまっています。


f:id:okadato623:20191109204240p:plain


矢印キーで対象の Pod を選択し、上記のキーを押して操作ができます。
例えばログを見たければ l でログのtailが始まり、


f:id:okadato623:20191110061328g:plain


yaml ファイルの編集を行いたければ e でそのまま即エディタが立ち上がり、編集が可能です。
個人的にはこれが最強に便利!VSCodeとの行き来が不要になるの、最高です!


f:id:okadato623:20191110061420g:plain


また Enter で Pod 内で稼働中のコンテナ一覧が確認できたり、Ctrl + a で Pod 以外にも稼働中のリソース一覧を確認することが可能です。
ここさえみればOK!の安心感よ…


f:id:okadato623:20191110055228p:plain
全リソースタイプ一覧を表示


その他にもいろいろな操作が可能な模様なので、遊んでみてください!
ぼくもまだ全然使いこなせてない感がありますゆえ、「こんな便利な機能もあるよ」などあったら教えていただけるととても嬉しいです!



ちなみに k9s 自体は Ctrl + c または :q で終了します(しばらくこれに気づかず毎度ターミナルを閉じてた)



気になるポイント

と、これでいちおう k9s のインストール & 動作確認は済んだのですが、気になるところがありませんでしたか?


そう、なにを隠そう CPU やメモリの使用率が取得できていない( n/a )のです!キモチワルイ!!


f:id:okadato623:20191109204326p:plain


というわけで次回 Kubernetes Metrics Server を導入し、メトリクスの取得を行います!



無事、こーんな感じになり、わりとつよつよな CLI クラスタマネジメント環境が整います!


f:id:okadato623:20191110055932p:plain


乞うご期待、です 🐶