6
3

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 1 year has passed since last update.

kubectlが捗りそうなkrewプラグイン試してみた

Last updated at Posted at 2023-06-24

はじめに

GKEの管理をしていて日々kubectlを打っているのですが、最近krewというツールの存在を知りました。
krewのプラグインを活用することで、kubectlをもっと便利に使えるようになります。

そこで本記事では、いくつかプラグインを触ってみて便利そうだなと思ったものをサンプルコマンドと共に紹介していきます。

前提

krewの基本的なコマンド

# krewの更新(リストの更新)
$ k krew update
# インストール済みのプラグインの更新
$ k krew upgrade

# プラグインの検索
$ k krew search

# プラグインのインストール
$ k krew install {プラグイン名}
# プラグインのアンインストール
$ k krew uninstall {プラグイン名}

# インストール済みプラグインを一覧表示
$ k krew list

便利プラグイン紹介

※ 個人的に使う場面が多そうなプラグインです。便利なプラグインは他にも沢山あるのでぜひ探してみてください。
krewプラグイン一覧

# 2023/06現在で200以上のプラグインがあります
$ k krew version      
OPTION            VALUE
GitTag            v0.4.3

$ k krew search |wc -l
     218

ctx

ctx

簡単にコンテキストを変えて、操作対象クラスタを切り替えできる。
日常的に操作するクラスターが複数あるときにかなり便利。
これまでkubectx使ってましたが、こっちでも良いなと思いました。

# 対象のクラスタ確認
$ k ctx
# 切り替え
$ k ctx my-cluster-1

ns

ns

簡単にnamespaceを切り替えできる。クラスタ内で複数namespaceを操作するときに便利。

# default名前空間に切り替え
$ k ns default

# kube-system名前空間に切り替え
$ k ns kube-system
Context "gke_xxx_my-cluster-1" modified.
Active namespace is "kube-system".

# 確認
$ k get deploy
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
event-exporter-gke      1/1     1            1           1d
kube-dns                2/2     2            2           1d
kube-dns-autoscaler     1/1     1            1           1d

neat

neat

既存リソースをget -o yamlで出力したマニフェストから、k8sが自動付与した冗長な記述を削ぎ落として表示してくれる。
マニフェストがかなり読みやすくなる。個人的にかなり好みです。
おそらく、getできれば何に対しても利用できると思います。

$ k get po my-pod -o yaml | k neat

# もちろんdeploymentでも
$ k get deploy my-deploy -o yaml | k neat

# json表示も可能
$ k get deploy my-deploy -o yaml | k neat -o json

stern

stern

k8sの複数のPodとコンテナをtailできる。色分け表示されるので分かりやすい。
kubectl logsをPodごとに実行しなくても良いので、デバッグ時等に大活躍します。
Pod名のクエリは正規表現で指定

$ k stern {マッチするPod名}

# 全namespaceの全podのログ
$ k stern hello -A

resource-capacity

resource-capacity (kube-capacity)

Node・PodごとにResource Request/Limitを一覧表示してくれる。
従来ならk describe nodeの長ったらしい出力の中から見にいかないといけないのを、簡略化して表示してくれるので、個人的にすごく好みです。

# ノードごとの使用率・合計使用量を表示
$ k resource-capacity
---
NODE         CPU REQUESTS   CPU LIMITS   MEMORY REQUESTS   MEMORY LIMITS
*            2237m (38%)    343m (5%)    3795Mi (20%)      5355Mi (29%)
gke-node-1   573m (29%)     100m (5%)    1250Mi (20%)      1610Mi (26%)
gke-node-2   1033m (53%)    100m (5%)    1200Mi (19%)      1780Mi (29%)
gke-node-3   631m (32%)     143m (7%)    1345Mi (22%)      1965Mi (32%)
---

# ノードごとの空き容量・合計空き容量を表示
$ k resource-capacity -a
---
NODE         CPU REQUESTS   CPU LIMITS    MEMORY REQUESTS   MEMORY LIMITS
*            3553m/5790m    5447m/5790m   14321Mi/18116Mi   12761Mi/18116Mi
gke-node-1   1357m/1930m    1830m/1930m   4789Mi/6039Mi     4429Mi/6039Mi
gke-node-2   897m/1930m     1830m/1930m   4839Mi/6039Mi     4259Mi/6039Mi
gke-node-3   1299m/1930m    1787m/1930m   4694Mi/6039Mi     4074Mi/6039Mi
---

# ノード別でPodごとの使用量を表示
$ k resource-capacity -p
---
NODE         NAMESPACE   POD       CPU REQUESTS   CPU LIMITS   MEMORY REQUESTS   MEMORY LIMITS
*            *           *         2237m (38%)    343m (5%)    3795Mi (20%)      5355Mi (29%)
                                              
gke-node-1   *           *         573m (29%)     100m (5%)    1250Mi (20%)      1610Mi (26%)
gke-node-1   default     my-pod-1  50m (2%)       0m (0%)      250Mi (4%)        250Mi (4%)
gke-node-1   default     my-pod-2  200m (10%)     0m (0%)      600Mi (9%)        600Mi (9%)
...
---

# namespaceを絞って表示
$ k resource-capacity -p -n default

# 並び替え表示(下記はCPU request値の降順)
$ k resource-capacity -p --sort cpu.request

# 実際の使用状況も表示
$ kube-capacity -u

status

status

describeやgetよりも、リソースのステータスをわかりやすく表示してくれる。

# 全Deploymentの詳細を表示
$ k status deploy
# 特定のものだけ
$ k status deploy my-deploy

# podやingress, service等も可能

get-all

get-all

従来のk get allでは全てのリソースを表示してくれなかったのを、krewのget-allなら本当に全部表示してくれる(らしい)。
初見で全部のリソースを俯瞰したい時とか、変なリソース作られてないか確認したい時に役立ちそう。
GKEのカスタムリソースであるmanagedcertificateなども出力してくれたので、結構イケてそうです。

$ k get-all
## 大量に出力されるので、ファイルに書き出した方が良さそう
$ k get-all > get-all.txt

# namespace指定
$ k get-all --namespace=default
# scope指定
$ k get-all --only-scope=cluster

images

images

Podが使用しているコンテナイメージを一覧表示してくれる。

# 表形式で表示(場合によっては体裁崩れて見づらい)
$ k images

# 箇条書き表示。個人的にこっちの方が見やすい
$ k images -oy
- pod: my-pod
  container: my-container
  image: gcr.io/my-project/example:sha

# 抜粋表示
$ k images -oy -c 1,3
- pod: my-pod
  image: gcr.io/my-project/example:sha

tree

tree

リソースの関係をツリー表示してくれる。
初見のリソースについて把握したいときに便利そう。

$ k tree deploy my-deploy
$ k tree svc my-service

## ingressはできないっぽい..

参考

6
3
0

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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?