5章Pod

ここまでの章で、アプリケーションをコンテナ化する方法を見てきました。コンテナ化したアプリケーションを実際にデプロイする時は、複数のアプリケーションをまとめてアトミックな単位にした上で、1台のマシン上に同居させることはよくあるでしょう。

図5-1は、このような要求に沿った標準的な構成例です。リモートGitリポジトリとファイルシステムを同期させるGitコンテナと、同期されたファイルをWeb経由で配信するコンテナの2つから構成されています。

2つのコンテナと共有ファイルシステムを持ったPodの例

図5-1 2つのコンテナと共有ファイルシステムを持ったPodの例

この図を見ると、WebサーバとGit同期サーバの両方の機能を、1つのコンテナにまとめてしまえばいいのにと思うかもしれません。しかし、よく見てみるとなぜ2つのコンテナが分かれているのか理由がはっきりします。まず、2つのサーバの使用するリソースの必要条件にはかなり違いがあります。例えばメモリについて考えてみます。Webサーバは、ユーザからのリクエストを処理するために、常に起動していて応答できる必要があります。一方で、Git同期サーバにはユーザが直接アクセスするわけではないので、ベストエフォートでサービスを提供できれば問題ありません。

ここでGit同期サーバがメモリリークを起こすバグを抱えているとしましょう。2つのサーバが1つのコンテナ上で動いていると、Git同期サーバのメモリリークはWebサーバのパフォーマンスに影響したり、最悪の場合Webサーバをクラッシュさせてしまう可能性があります。そのため、Webサーバが必ずメモリを使えるようにするため、Git同期サーバがメモリを使い切らないように何らかの仕組みを作っておかなければなりません。 ...

Get 入門 Kubernetes now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.