kubectlでコンテナ内部に入り、任意のコマンドを実行する【Kubernetes入門】

kubectlでコンテナ内部に入る方法

kubernetesではコンテナの内部に入り、linuxコマンドを打てる環境を用意してくれます。より正確にいうと、コンテナに対してssh接続しているかのようにシェルを起動できるのです。

ローカルマシン上でPodを動かしていて、動作がおかしい場合はコンテナ内部でコマンドを実行するのが良いでしょう。 kubectl execコマンドを使用すると、シェルを含めた特定のコマンドを任意のコンテナで実行できます。

zenn.dev

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 execbashを立ち上げましょう。 永続的にコンテナにつながることができると思います。

kubectl exec -it POD_NAME -- bash
> ls
> ipconfig