ログイン / 登録 アカウント
Jump to section

Kubernetes Pod とは

URL をコピー

Kubernetes Pod は、1 つ以上の Linux® コンテナの集合体で、Kubernetes アプリケーションの最小単位です。特定のポッドは、密結合された複数のコンテナ (高度なユースケース)、または単一のコンテナ (より一般的なユースケース) で構成されます。以下で説明する通り、リソース共有のインテリジェンスを向上させるために、コンテナは Kubernetes ポッドにグループ化されます。

Kubernetes システム内では、同じポッドのコンテナが同じコンピューティング・リソースを共有します。これらのコンピューティング・リソースは Kubernetes で一緒にプールされてクラスタを形成します。これにより、アプリケーションを実行するためのより強力でインテリジェントな分散システムを提供できます。コンテナからポッド、ノード、クラスタに至るまで、Kubernetes の構成要素を理解するのは、始めは難しいかもしれませんが、Kubernetes ポッドのメリットの理解に最も関連する要素は次のように分類されます。

ハードウェアユニット

ノード:Kubernetes でのコンピューティング・ハードウェアの最小単位で、簡単に考えると、1 つの個別マシンです。

クラスタ:インテリジェントなリソースの共有とバランシングを可能にするためにグループ化されたノードの集合体です。

ソフトウェアユニット

Linux コンテナ:実行に必要なすべてのファイルを含む 1 つ以上のプロセスのセットで、マシン間での可搬性を有します。

Kubernetes ポッド:1 つ以上の Linux コンテナの集合体で、パッケージ化されることにより、クラスタ管理によるリソース共有のメリットを最大化します。

基本的に、個々のハードウェアは Kubernetes 内でノードとして表示されます。複数のこれらのノードがクラスタに収集され、必要に応じてコンピューティング能力を分散できます。このクラスタで実行されているのが Pod です。Pod は、クラスタ内の密結合コンテナが同じクラスタで一緒に実行されるようにします。

Kubernetes がコンテナを直接実行せず、代わりにポッドを実行して、ポッド内の各コンテナが同じリソースとローカルネットワークを共有できるようにするのは、ポッドとクラスタの関係が理由です。この方法でコンテナをグループ化すると、コンテナはある程度分離されたまま、同じ物理ハードウェアを共有するかのように相互に通信できます。

このようなコンテナをポッドにまとめるやり方は、Kubernetes のよく知られた機能の 1 つであるレプリケーションの基盤です。コンテナがポッドにまとめられている場合、必要に応じて、Kubernetes はレプリケーション・コントローラーを使用してアプリケーションを水平方向にスケーリングできます。事実上これは、単一のポッドが過負荷になった場合、Kubernetes がそれを自動的に複製してクラスタにデプロイできることを意味します。負荷が高いときに正常な機能性をサポートするためだけでなく、システムに障害耐性を持たせるためにも Kubernetes Pod は継続的に複製されます。

ポッドなどの再利用可能な要素のメリットを最大化することは、Kubernetes システムの中核的なメリットです。本番環境における Kubernetes の最適な使用方法を発見するには、何年もの試行錯誤が必要ですが、 クラウドネイティブ・アプリケーションが急速に普及している時代において、ほとんどの組織はそのような試行錯誤に時間をかけることができません。

しかし、Kubernetes が構築されているオープンスタンダードの基盤のおかげで、成功 (および失敗) のパターンが、早期に導入した組織による試行錯誤を通じてわかってきています。これらのパターンは、複製可能な設計として多くの組織が初期の導入作業を迅速化するために活用できます。

Kubernetes パターン:クラウドネイティブ・アプリケーションを設計するための再利用可能な要素 (Bilgin Ibryam、Roland Huß 共著、O'Reilly 提供) では、Kubernetes でのクラウドネイティブ・アプリケーションの設計および実装において共通した、再利用可能な要素、パターン、原則、およびプラクティスについて詳しく説明しています。