Kubernetes vs OpenShift

Kubernetes

コンテナ型のアプリケーションの実行環境に必要な機能を提供している。下記のコンポネントを持っている。

  1. Pod
  2. Service
  3. Persistent Volume と Persistent Volume Claims
  4. Replication Controller

1. Pod
1つまたは複数のコンテナをまとめた単位であり、同一のPodに含まれるコンテナはネットワークインタフェースやストレージを共有する。

2. Service
Pod内で実行されているアプリケーションをサービスとして公開するためのエンドポイントである。

3. Persistent Volume
コンテナ内のデータは揮発性なので、コンテナを停止するとその時に利用していたデータ(例えば、コンテナ内のディレクトリに出力していたログファイルなど)は消滅してしまう。コンテナからPersistent Volumeを使えるようにしておけば、コンテナの外にデータを保持することができるので、コンテナを再起動しても以前のデータを利用することができます。Persistent Volumeは、管理者がStorage Poolとして切り出してコンテナから利用できるようにする。

Persistent Volume Claimによって、コンテナはPersistent Volumeを要求する。Kubernetesは、要求に該当するPersistent Volumeをコンテナに割り当てる。

4. Replication Controller
Podが不正終了したり、削除された場合にはPodを新たに起動し、指定よりも多くPodが起動されている場合は、Podを停止して、Pod を一定数に保つ。

OpenShift

Kubernetesのコンポーネントはコンテナ型のアプリケーションを実行するために必要なものがメインだが、OpenShiftのコンポーネントではコンテナ型のアプリケーションとして実行するためのDocker Imageの作成やデプロイに関わる機能を追加している。また、OpenShiftそのもののインフラとして機能するコンポーネントもある。

  1. Integrated Docker Registry
  2. Software Defined Network
  3. Build Configuration
  4. Deployment Configuration
  5. Source to Image
  6. Image Stream
  7. Route

1. Integrated Docker Registry
OpenShiftは、コンテナ型アプリケーションとして実行するDocker Imageを内部で保持する。Docker Imageを保持するリポジトリがIntegrated Docker Registryである。

2. Software Defined Network
サーバーをまたいだコンテナ間の通信は、オーバーレイのネットワークを利用する。OpenShiftではデフォルトではシングルテナント(全てのコンテナが同じオーバーレイのネットワークを利用する)のネットワークを構成するが、マルチテナント(プロジェクトごとに異なるオーバーレイのネットワークを利用)するように構成することも可能である。

3. Build Configuration
コンテナ型のアプリケーションとして実行するための、Docker Imageを作成するための定義である。Dockerfile、Source to Image(後述)でのビルドはこの定義に従って、Docker Imageを作成する。既にできているDocker ImageをインポートしてOpenShift上で実行する場合は、この定義は不要。

4. Deployment Configuration
KubernetesのDeploymentsを拡張した、コンテナ型のアプリケーションをデプロイするための定義である。デプロイ対象のImage Stream、デプロイ方式、その他、コンテナ実行時に必要な設定を定義する。

5. Source to Image
ベースとなるコンテナイメージに、指定されたソースコードリポジトリから取得したソースコードからビルドされたアプリケーションをデプロイして、新たなDocker Imageを作成する。

6. Image Stream
Docker Imageへのポインターである。Image Streamは、OpenShiftがビルドしたDocker Image、外部のDocker Repositoryで配布されているDocker Imageへのポインターと保持する。

7. Route
OpenShiftで実行しているコンテナ型のアプリケーションをURL(例:apps.example.com)でアクセスできるようにする仕組み。

Kubernetes vs OpenShift

Dockerコンテナのオーケストレーション機能を提供するKubernetesに対して、OpenShiftはコンテナ型の開発を運用に便利な機能を提供している。
1. アクセスコントロール
2. コンテナのビルドとデプロイ機能

1. アクセスコントロール
OpenShiftでは、リソース分離と権限分掌によってアクセスコントロールを実現している。

2. ビルドとデプロイの機能
OpenShiftのProjectにはKubernetesで提供されるコンポーネントとOpenShiftで提供するコンポーネントが含まれる。

【参考】https://jp-redhat.com/openeye_online/column/omizo/4093/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA