はじめに
kubectl exec -itでコンテナに入ろうとすると、時々/bin/bashや/bin/shがない時があって困ったので、その場合の対処方法。kubernetesのマニュアルに全部書いてあった。
流れ
対象のPodでcontainerを立ち上げ、そのcontainerをPodにアタッチする模様。
デバッグしたいPodがephemeral-demoで、そのPodに/bin/bashがインストールされていない場合の例として、kubernetesマニュアルではbusybox:1.28のコンテナを接続する例を記載していたが、自分の使いたいコンテナならなんでも良さそう。
ephemeral-demoのPodにbusyboxのコンテナをアタッチする例
kubectl debug -it ephemeral-demo --image=busybox:1.28 --target=ephemeral-demo
うまくいけば対象のPodにログインできる。
Defaulting debug container name to debugger-r58ht.
If you don't see a command prompt, try pressing enter.
root@ephemeral-demo:/#
ただし、デバッグ用のコンテナはget podしても見えない
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
ephemeral-demo 1/1 Running 0 44m
#Readyなコンテナが一つだけ、busyboxのコンテナは何処に・・・
まとめ
知らなかったのは私だけ?