kubectlでコンテナ内部に入る方法
kubernetesではコンテナの内部に入り、linuxコマンドを打てる環境を用意してくれます。より正確にいうと、コンテナに対してssh接続しているかのようにシェルを起動できるのです。
ローカルマシン上でPodを動かしていて、動作がおかしい場合はコンテナ内部でコマンドを実行するのが良いでしょう。
kubectl exec
コマンドを使用すると、シェルを含めた特定のコマンドを任意のコンテナで実行できます。
kubectl execコマンドの構文
kuectl exec
の構文は以下のとおりです。
kubectl exec -it POD_NAME -- COMMAND [ARGS...]
POD_NAME
: コマンドを実行したいポッドの名前。-it
: インタラクティブモードでコマンドを実行するためのオプション。bashコマンドやshコマンドで半永続的に接続するために必要。--
: コンテナ内部の命令は--
以降に記述しますCOMMAND [ARGS...]
: 実行したいコマンドとその引数
nginxの内部に入る
以下のコマンドでnginxリソースを立ち上げた後、PODの名前をPOD_NAME
に登録しておきましょう。
POD_NAME=$(kubectl get pods --selector=app=nginx-deployment -o=jsonpath='{.items[0].metadata.name}')
その後、nginxコンテナの中でls
コマンドを打つことができます。
kubectl exec POD_NAME -- ls
あるいは、オプションをつけるのも良いでしょう
kubectl exec POD_NAME -- ls -al
kubectl execでbashを起動する
kubectl exec
でbash
を立ち上げましょう。
永続的にコンテナにつながることができると思います。
kubectl exec -it POD_NAME -- bash > ls > ipconfig