kubectl の plugin kubectl-dfi を作った
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
とりあえず叩いてみる
ちょっと見難いかもしれませんね。見やすくしてみましょう。
表示する単位は GiB
や MiB
にも対応しています。
対象の node は label を使って絞ったり、引数に渡して絞ることもできます。
実際にどんなコンテナイメージがあるの?っていう疑問が出てくるかもしれませんが、表示できるようにしてあります。 --list
を使うことで持っているイメージをリスト化します。
GKE だと何もしなくてもこれらのイメージが pull されているようですね。semantic versioning の v
を付ける付けないの差がイメージ毎にあって面白いですね
あとは github の README とか見て下さい。
ちなみにいろいろ動かしていて気が付いたんですが、コンテナの runtime で Docker
を使っている場合と containerd
を使っている場合とで同じイメージでもサイズが結構違うんです。 containerd
を使っている場合は Docker
の時と比べてサイズが半分くらいでした。
例えば k8s.gcr.io/pause:3.1
の例だと Docker
は 742kB
で containerd
だと 317kB
でした。イメージサイズの計算の仕方が違うのかなと思うんですけども、こういう差が出てくるのも面白いですね。
kubectl
の plugin どんどんやっていくぞ!