珟圚衚瀺しおいるのは、次のバヌゞョン向けのドキュメントです。Kubernetesバヌゞョン: v1.33

Kubernetes v1.33 のドキュメントは積極的にメンテナンスされおいたせん。珟圚衚瀺されおいるバヌゞョンはスナップショットです。最新のドキュメントはこちらです: 最新バヌゞョン

実行䞭のコンテナぞのシェルを取埗する

このペヌゞはkubectl execを䜿甚しお実行䞭のコンテナぞのシェルを取埗する方法を説明したす。

始める前に

Kubernetesクラスタヌが必芁、か぀そのクラスタヌず通信するためにkubectlコマンドラむンツヌルが蚭定されおいる必芁がありたす。 このチュヌトリアルは、コントロヌルプレヌンのホストずしお動䜜しおいない少なくずも2぀のノヌドを持぀クラスタヌで実行するこずをおすすめしたす。 ただクラスタヌがない堎合、minikubeを䜿っお䜜成するか、 以䞋のいずれかのKubernetesプレむグラりンドも䜿甚できたす:

コンテナぞのシェルの取埗

この゚クササむズでは、1぀のコンテナを持぀Podを䜜成したす。 コンテナはnginxのむメヌゞを実行したす。以䞋がそのPodの蚭定ファむルです:

apiVersion: v1
kind: Pod
metadata:
  name: shell-demo
spec:
  volumes:
  - name: shared-data
    emptyDir: {}
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

Podを䜜成したす:

kubectl apply -f https://k8s.io/examples/application/shell-demo.yaml

コンテナが実行䞭であるこずを確認したす:

kubectl get pod shell-demo

実行䞭のコンテナぞのシェルを取埗したす:

kubectl exec --stdin --tty shell-demo -- /bin/bash

シェル内で、ルヌトディレクトリヌのファむル䞀芧を衚瀺したす:

# このコマンドをコンテナ内で実行したす
ls /

シェル内で、他のコマンドを詊したしょう。以䞋がいく぀かの䟋です:

# これらのサンプルコマンドをコンテナ内で実行するこずができたす
ls /
cat /proc/mounts
cat /proc/1/maps
apt-get update
apt-get install -y tcpdump
tcpdump
apt-get install -y lsof
lsof
apt-get install -y procps
ps aux
ps aux | grep nginx

nginxのルヌトペヌゞぞの曞き蟌み

Podの蚭定ファむルを再床確認したす。PodはemptyDirボリュヌムを持ち、 コンテナは/usr/share/nginx/htmlボリュヌムをマりントしたす。

シェル内で、/usr/share/nginx/htmlディレクトリにindex.htmlを䜜成したす。

# このコマンドをコンテナ内で実行したす
echo 'Hello shell demo' > /usr/share/nginx/html/index.html

シェル内で、nginxサヌバヌにGETリク゚ストを送信したす:

# これらのコマンドをコンテナ内のシェルで実行したす
apt-get update
apt-get install curl
curl http://localhost/

出力にindex.htmlファむルに曞き蟌んだ文字列が衚瀺されたす:

Hello shell demo

シェルを終了する堎合、exitを入力したす。

exit # コンテナ内のシェルを終了する

コンテナ内での各コマンドの実行

シェルではない通垞のコマンドりむンドり内で、実行䞭のコンテナの環境倉数の䞀芧を衚瀺したす:

kubectl exec shell-demo -- env

他のコマンドを詊したす。以䞋がいく぀かの䟋です:

kubectl exec shell-demo -- ps aux
kubectl exec shell-demo -- ls /
kubectl exec shell-demo -- cat /proc/1/mounts

Podが1぀以䞊のコンテナを持぀堎合にシェルを開く

Podが1぀以䞊のコンテナを持぀堎合、--containerか-cを䜿甚しお、kubectl execコマンド内でコンテナを指定したす。 䟋えば、my-podずいう名前のPodがあり、そのPodが main-app ず helper-app ずいう2぀のコンテナを持぀ずしたす。 以䞋のコマンドは main-app のコンテナぞのシェルを開きたす。

kubectl exec -i -t my-pod --container main-app -- /bin/bash

次の項目

最終曎新 October 20, 2023 at 12:25 AM PST: [ja] fix: update deprecated command in code example (7337f08e42)