kubectl の plugin kubectl-dfi を作った

kubectlの plugin の作成の練習を兼ねて

makocchi
4 min readJun 12, 2019

kubectl は pluginを書くことでその機能を独自に拡張することができます。

今回 plugin の書き方を習得する為に、ちょっとした plugin kubectl-dfi を作ってみました。(役に立つとは言っていない😜)

kubectl-dfi

Kubernetes の node で稼働する kubelet はコンテナを実行するわけですが、 kubelet は今どのようなコンテナのイメージを node が保持しているかを内部的に情報として持っています。

kubectl get node node-name -o yaml とか実行すると spec.images に情報が出てくることが分かります。

kubectl-dfi はその情報を分かりやすく表示してくれる plugin だと思って下さい。

Usage

とりあえず叩いてみる

kubectl dfi

ちょっと見難いかもしれませんね。見やすくしてみましょう。

kubectl dfi -g

表示する単位は GiBMiB にも対応しています。

kubectl -m -B

対象の node は label を使って絞ったり、引数に渡して絞ることもできます。

kubectl dfi -l key=value

実際にどんなコンテナイメージがあるの?っていう疑問が出てくるかもしれませんが、表示できるようにしてあります。 --list を使うことで持っているイメージをリスト化します。

kubectl dfi — list

GKE だと何もしなくてもこれらのイメージが pull されているようですね。semantic versioningvを付ける付けないの差がイメージ毎にあって面白いですね

あとは github の README とか見て下さい。

ちなみにいろいろ動かしていて気が付いたんですが、コンテナの runtime で Docker を使っている場合と containerd を使っている場合とで同じイメージでもサイズが結構違うんです。 containerdを使っている場合は Docker の時と比べてサイズが半分くらいでした。

例えば k8s.gcr.io/pause:3.1 の例だと Docker742kBcontainerd だと 317kB でした。イメージサイズの計算の仕方が違うのかなと思うんですけども、こういう差が出てくるのも面白いですね。

kubectl の plugin どんどんやっていくぞ!

--

--

makocchi

Makoto Hasegawa | kubernetes | CKA(#CKA-1700–0150–0100) | CKAD(CKAD-1800–0005–0100) | docker | container | OpenStack