1 コンテナ・ランタイムの概要
重要:
このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。
このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。
この章では、Oracle Cloud Native Environmentで使用可能なコンテナ・ランタイムについて説明します。 使用可能なコンテナ・ランタイムは、Open Container Initiative (OCI)ランタイム仕様に準拠しています。
この章では、runCとKata Containersについて概要を示します。
このドキュメントでは、イメージを使用してコンテナを作成する方法や、Kubernetesのポッドまたはデプロイメントを作成および使用する方法については説明しません。
Kubernetesの使用によるコンテナの作成と管理の詳細は、コンテナ・オーケストレーションを参照してください。
runCの概要
runCはLinux Foundationのランタイム仕様(runtime-spec
)に基づくコンテナ・ランタイムです。runCはOpen Container Initiativeによって開発されています。
runCは、Oracle Cloud Native Environmentのコンポーネントです。runCは、クラウド・ネイティブ・コンピューティング・ファウンデーション(CNCF)準拠環境であり、マイクロサービスをデプロイしてコンテナを編成します。
runCは、安定している、アップストリームのrunCプロジェクトのリリースに基づいています。 このソフトウェアのOracleバージョンとアップストリーム・リリースとの違いは、特定の不具合に対してOracle固有の修正およびパッチが適用されているかどうかです。
アップストリームのrunCのドキュメントについては、次を参照してください。
https://github.com/opencontainers/runc/blob/main/man/runc.8.md
runCの詳細は、次を参照してください。
Kata Containersの概要
Kata Containersを使用すると、ワークロードのセキュリティと独立性をさらに高めることができます。 Kata Containersは、アップストリームのKata Containers OpenStack Foundationプロジェクトに基づいています。 Kata Containersでは、コンテナ・エコシステムに簡単に組み込むことができる、軽量仮想マシンを作成するためのフレームワークが提供されます。 Kata Containersでは、セキュリティが向上しますが、開発速度とデプロイメント速度は従来のコンテナと同程度です。
Kata ContainersはOracle Cloud Native Environmentのコンポーネントです。 Kata Containersは、マイクロサービスのデプロイとコンテナのオーケストレーションのためのCloud Native Computing Foundation (CNCF)準拠環境です。
Kataコンテナは、安定している、アップストリームのKataコンテナ・プロジェクトのリリースに基づいています。 このソフトウェアのOracleバージョンとアップストリーム・リリースとの違いは、特定の不具合に対してOracle固有の修正およびパッチが適用されているかどうかです。
アップストリームのKata Containersのドキュメントについては、次を参照してください。
https://github.com/kata-containers/documentation
Kata Containersの詳細は、次を参照してください。
ランタイム・クラスの設定
CRI-Oでは、ポッド構成ファイルに設定されているKubernetesアノテーションまたはランタイム・クラスを使用して、runc
かkata-runtime
のどちらを使用してポッドを実行するかを決定します。
図1-1 Kubernetesランタイム
Kubernetesランタイム・クラスを作成して、コンテナをデフォルト・ランタイムrunc
として実行するかkata-runtime
を使用して実行するかを指定できます。 このドキュメント内の例では、名前native
を使用してrunc
の使用を指定し、名前kata-containers
を使用してkata-runtime
の使用を指定しています。 任意の名前を使用できます。
ランタイム・クラスを作成するには、次の手順を実行します。
-
Kata Containers用ランタイム・クラスのファイルを、
kata-runtime.yaml
という名前を付け、次の内容を含めて作成します。kind: RuntimeClass apiVersion: node.k8s.io/v1beta1 metadata: name: kata-containers handler: kata
Kubernetesデプロイメントにそのランタイム・クラスをロードします。
kubectl apply -f kata-runtime.yaml
これで、ランタイム・クラス
kata-containers
をポッド構成ファイル内で使用して、コンテナをkata-containers
ランタイムの使用によってKataコンテナとして実行するように指定できます。 このランタイム・クラスを使用したポッドの作成の例は、「Kataコンテナの作成」を参照してください。 -
(オプション)
runc
のランタイムを指定する必要がある場合は、同様の方法でそれを実行できます。 これは必要に応じて行う構成ステップです。runc
はデフォルトのランタイムであるため、別途指定しないかぎり、ポッドは、自動的にrunc
を使用して実行されます。 このファイルの名前はrunc-runtime.yaml
です。kind: RuntimeClass apiVersion: node.k8s.io/v1beta1 metadata: name: native handler: runc
Kubernetesデプロイメントにそのランタイム・クラスをロードします。
kubectl apply -f runc-runtime.yaml
ランタイム・クラス
native
をポッド構成ファイル内で使用して、コンテナをrunc
ランタイムの使用によってrunCコンテナとして実行するように指定できます。 -
kubectl get runtimeclass
を使用して、Kubernetesクラスタで使用可能なランタイム・クラスのリストを表示できます。 たとえば:kubectl get runtimeclass NAME CREATED AT kata-containers 2019-09-11T06:48:12Z native 2019-09-11T07:08:56Z