はじめに
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のコンテナは何処に・・・
まとめ
知らなかったのは私だけ?