Kubernetesの最も小さい基本的な構成単位をPodといい、マニフェストファイルを用いると、ローカルに存在しているDockerイメージを利用してPodを作成できる。
今回は、Pythonプログラムを実行できるDockerイメージを利用して、Podを作成してみたので、その手順を共有する。
なお、Podについては、以下のサイトを参照のこと。
https://qiita.com/MahoTakara/items/f5130bb6e9e493c46c6b
前提条件
以下の手順に従って、「Docker Desktop」インストール済のWindows端末でKubernetesを有効化済であること。
また、以下の手順に従って、Dockerイメージ「python_test 」を作成済であること。
やってみたこと
Pod作成前の状態確認
Podを作成する前の、DockerイメージとDockerコンテナの状態を確認する。その手順は、以下の通り。
1)「docker image ls」コマンドで、Dockerイメージ「python_test 」を作成済であることを確認する。
なお、「docker image ls (Dockerイメージ名)」コマンドを実行すると、以下のように、指定したDockerイメージのみ一覧に表示することができる。
このときの、Docker Desktop上でDockerイメージを確認した結果は、以下の通り。
2)「docker container ls -a」コマンドで、Dockerコンテナが作成されていないことを確認する。
このときの、Docker Desktop上でDockerコンテナを確認した結果は、以下の通り。
Pod作成とPythonプログラムの実行
yaml形式のマニフェストファイルを利用すると、独自Podを作成できる。Podを作成し、Pod内のPythonプログラムを実行する手順は、以下の通り。
1) マニフェストファイル(python-test-pod.yml)を以下の内容で作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | apiVersion: v1 kind: Pod metadata: # Pod名 name: python-test spec: # Podに含まれるコンテナ containers: # Dockerコンテナ名 - name: python-test # 利用するDockerイメージ名 image: python_test # ローカルのDockerイメージを利用する旨を指定 imagePullPolicy: Never # Podが終了しないよう設定 command: - "sh" - "-c" args: - | while true do sleep 5 done |
2) 1)のファイルを配置し、「kubectl apply -f (マニフェストファイル名)」コマンドを実行し、Podを作成する。
3)「kubectl get pod」コマンドを実行すると、作成したPodの状態を確認できる。
このときの、Docker Desktop上でDockerコンテナを確認した結果は、以下の通り。
4)「kubectl exec -it (Pod名) — /bin/bash」コマンドを実行すると、指定したPod内に入ることができる。
5) 2)で起動したPod内で、Pythonプログラム「decision_tree_sample.py」を実行すると、プログラムが正常終了し、画像ファイル「decision_tree_graph.png」が出力されることが確認できる。
6) exitコマンドを実行すると、以下のように、2)で起動したPodから出ることができる。また、「kubectl get pod」コマンドを実行すると、Podがまだ起動中であることが確認できる。
7)「kubectl cp (Pod名):(ファイルパス) ./(ローカルのファイル名)」コマンドを実行すると、以下のように、Pod内のファイルをローカルにコピーすることができる。
8)「kubectl delete pod/(Pod名)」コマンドを実行すると、以下のように、起動しているPodを削除することができる。
このときの、Docker Desktop上でDockerコンテナを確認した結果は、以下の通り。
要点まとめ
- Kubernetesの最も小さい基本的な構成単位をPodといい、マニフェストファイルを用いると、ローカルに存在しているDockerイメージを利用してPodを作成できる。