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)を以下の内容で作成する。

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
done2) 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を作成できる。




