検証して、その意図する処を確かめたメモです。目的とする処理方式を図にすると、次の様になります。データを取得して、バッチ・ジョブを実行します。表記した箱で、左上がRabbitMQへのデータの投入側になります。真ん中の箱が、RabbitMQのコンテナが動作するポッドです。立てることで、クラスタIPアドレスが付与され、k8s内部のDNSへサービス名が登録され、データ生成側のポッド、バッチ処理のポッドから、サービス名でアクセスできる様になります。この様な構成をとることで、大量にメモリを消費するレンダリング、膨大な宛先へ短時間でメール送信するための処理、NoSQLデータベースをサーチしてデータを集める、などなど、一回の処理で、1分以上を要し、大量のメモリや、並列処理を必要とする用途に、適したバッチ処理の環境を作ることができます。終了通知のシグナルを受けてから1分以内で、コンテナ上のプロセスを正常終了させる必要があるためです。なければ、強制停止となります。実際に上記のジョブを動作させて振る舞いを確認して行きます。YAMLファイルは、GitHubのサンプルYAMLを利用します。指定して、RabbitMQを起動します。createdこれで、RabbitMQの準備は完了になります。RabbitMQが動作する仮想サーバー(ノード)が異常停止すれば、残りのノードで、RabbitMQのポッドが起動します。今回はやっていませんが、キューの永続化ディスクを永続ストレージに設定していれば、キューのデータの喪失も防ぐことができます。k8sクラスタ内のClusterIPにアクセスするために、シェルやcurlコマンドを実行するためのポッドを起動してログインします。目的のポッドのIDをメモっておき、次のコマンドでログインします。kube-dnsに登録されているか確認します。k8sクラスタ内ネットワークのアドレスが確認できれば成功です。-dfooキューに書き込んで、読み取れたらテスト成功です。job1に8個の文字列を書き込んでおきます。done繰り返し検証する場合には、次のワンラインをコピペすることで、何度もキューに書き込むことができます。done以上でキューの準備が完了しました。最初の絵で言えば、左上のデータ生成側常駐側ポッド、真ん中の常駐型サービスの二つが出来た事になります。次に、右下の赤いボックスのジョブを作って行きます。誤りがあり動作しないので、sys.stdin以下を少し修正した次のコードを利用します。ジョブを実行するためのYAMLファイルに環境変数として定義します。することで、コンテナを再ビルドすることなく、ブローカーのアドレスとキュー名の変更に対応できます。/worker.py上記の2つのファイルがあるディレクトリで、次のコマンドを実行して、コンテナを作成します。リポジトリにありますから、以下のコマンドで確認できます。アクセスできるコンテナのレジストリへアップロードします。