🦆
k0sで動いてるdistrolessコンテナにファイルを送り込む
はじめに
k0sで走ってるdistrolessコンテナpodがなにかおかしいときにshellを取りたいんだけどdistrolessだとbusyboxもない。
dockerで動いてる場合はcpでbusyboxを流し込める[1]というので、dockerで出来るんだったらcontainerd[2]でも出来るだろうと思って調べたところ、nerdctl cpを使うことで無事達成。
具体例
と言っても、nerdctl標準と違うsocketとnamespaceを指定[3]するだけ。
$ sudo nerdctl -a unix:///run/k0s/containerd.sock -n k8s.io ps
これでファイル送り込みたいpodのidを調べて、そこに向かって流し込む。
$ sudo nerdctl -a unix:///run/k0s/containerd.sock -n k8s.io cp ./busybox 17339f010b5c:/usr/bin
あとはnerdctl execなりkubectl execで実行。
-
Runtime (CRI) - Documentationにあるとおり、k0sのdefault CRIはcontainerdです。 ↩︎
-
Propertiesにあるように、この引数は環境変数
CONTAINERD_ADDRESS
およびCONTAINERD_NAMESPACE
で指定可能なので、恒常的に使うんだったらこっちで設定したほうが良いかも。 ↩︎
Discussion