Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Part-95: 🚀Implementing Kubernetes Job Basics in Google Kubernetes Engine (GKE)

2025年10月02日に「Dev.to」が公開したITニュース「Part-95: 🚀Implementing Kubernetes Job Basics in Google Kubernetes Engine (GKE)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Kubernetes Jobは、継続実行ではなく一回限りのタスクを完了させる目的でPodを動かす機能だ。バッチ処理やデータ分析などに使う。Google Kubernetes Engine上でJobをYAMLやコマンドで作成・実行し、完了後にPodが終了することを確認する手順を紹介している。

ITニュース解説

Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するための強力なシステムである。そのKubernetesにおいて、Jobとは特定のタスクを一度だけ実行し、完了させることを目的としたリソースを指す。これは、継続的に稼働し続けることを前提としたDeploymentやReplicaSetとは根本的に異なる特性を持つ。Jobは、バッチ処理、ETL(データ抽出・変換・読み込み)、ログ分析、レポート生成など、一時的で完了を伴う処理に特に適している。

具体的なKubernetes Jobの実装を見ていこう。まず、Jobを定義するためのYAMLファイルを作成する。このファイルはJobの設定を記述した「マニフェスト」と呼ばれるもので、job1.yamlという名前で保存されることを想定する。

job1.yamlの内容は以下のようになる。 apiVersion: batch/v1は、このリソースがKubernetesのバッチAPIグループのバージョン1に属することを示している。 kind: Jobは、このリソースがJobであることを明示する。 metadata.name: job1は、Jobインスタンスにjob1というユニークな名前を付ける部分である。 spec.template以下は、Jobが実行するPodのテンプレートを定義している。 spec.template.spec.containersでは、Pod内で実行されるコンテナの設定を行う。ここではjob1という名前のコンテナが定義され、alpineという軽量なLinuxディストリビューションのイメージを使用する。 command: ['sh', '-c', 'echo Kubernetes Jobs Demo ; sleep 30']は、コンテナが起動したときに実行されるコマンドである。このコマンドは「Kubernetes Jobs Demo」という文字列を画面に出力した後、30秒間待機してから終了する。 重要なのがrestartPolicy: Neverという設定である。これは、コンテナが一度終了したら、たとえエラーで終了した場合でもKubernetesが自動的に再起動しないように指示している。Jobの目的はタスクを完了させることなので、完了したコンテナを再起動させる必要はないため、この設定がよく使われる。

このJobの定義は、「Alpineコンテナを起動し、『Kubernetes Jobs Demo』と表示させ、30秒待機後に完了する」という単発の処理を実行することになる。

このYAMLファイルをKubernetesクラスターにデプロイするには、kubectl apply -f job1.yamlまたはkubectl create -f job1.yamlというコマンドを使用する。これにより、Kubernetesはjob1.yamlに記述された通りにJobを作成し、そのJobに基づいてPodの実行を開始する。

Jobがデプロイされたら、その状態を確認できる。 kubectl get jobsコマンドを実行すると、現在稼働しているJobの一覧が表示される。ここでjob1が作成され、実行中であることが確認できるだろう。 kubectl describe job job1コマンドを使うと、job1に関するより詳細な情報、例えばJobが作成したPodの名前や、完了条件などが表示される。 JobがPodを作成していることを確認するには、kubectl get podsコマンドを使用する。すると、job1によって作成されたPodの一覧が表示される。このPodは、指定されたコマンドを実行するために起動している。

しばらくすると、job1によって作成されたPodは、sleep 30コマンドの実行を終え、完了状態になる。 kubectl get podsを再度実行すると、PodのステータスがCompletedに変化していることが確認できるだろう。 特定のPodの詳細を確認したい場合は、kubectl describe pod <POD-NAME>コマンドを使用する。ここで<POD-NAME>は、kubectl get podsで確認したPodの名前を入れる。これにより、Podのイベントログや終了コードなど、詳細な実行結果を見ることができる。

Jobのテストが完了したら、クリーンアップとしてJobを削除する。kubectl delete job job1コマンドを実行すると、Job自体とそのJobによって作成されたすべてのPodがクラスターから削除される。これにより、不要なリソースが残ることを防ぐ。

Kubernetes Jobを作成する方法はYAMLファイルを使う以外にも、kubectlコマンドで直接作成する「命令的コマンド」という方法もある。 kubectl create job job2 --image=alpine -- sh -c 'echo Kubernetes Jobs Basics Demo ; sleep 30'というコマンドを使うと、job2という名前で、先ほどと同様にAlpineコンテナがメッセージを表示し、30秒間待機するJobをYAMLファイルを介さずに直接作成できる。 この方法で作成したJobも、kubectl get jobskubectl get podsで状態を確認でき、kubectl delete job job2で削除できる。

このように、Kubernetes Jobは特定のタスクを確実に完了させるための重要なリソースである。バッチ処理やデータ分析など、一時的な処理を自動化する際に非常に役立つ。YAMLファイルを使って詳細に設定することも、シンプルなタスクであれば命令的コマンドで手軽に作成することも可能である。これらの機能を理解し活用することで、より効率的なシステム運用を実現できる。

関連コンテンツ