機械翻訳について

1 コンテナ・ランタイムの概要

この章では、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の詳細は、次を参照してください。

https://github.com/opencontainers/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の詳細は、次を参照してください。

https://katacontainers.io/

 ランタイム・クラスの設定

CRI-Oでは、ポッド構成ファイルに設定されているKubernetesアノテーションまたはランタイム・クラスを使用して、runckata-runtimeのどちらを使用してポッドを実行するかを決定します。

図1-1 Kubernetesランタイム


この図は、CRI-OがKubernetesアノテーションまたはランタイム・クラスを使用して、runcかkata-runtimeのどちらを使用してポッドを実行するかを決定する処理を示しています。

Kubernetesランタイム・クラスを作成して、コンテナをデフォルト・ランタイムruncとして実行するかkata-runtimeを使用して実行するかを指定できます。 このドキュメント内の例では、名前nativeを使用してruncの使用を指定し、名前kata-containersを使用してkata-runtimeの使用を指定しています。 任意の名前を使用できます。

ランタイム・クラスを作成するには、次の手順を実行します。

  1. Kata Containers用ランタイム・クラスのファイルを、kata-runtime.yamlという名前を付け、次の内容を含めて作成します。

    kind: RuntimeClass
    apiVersion: node.k8s.io/v1
    metadata:
        name: kata-containers
    handler: kata

    Kubernetesデプロイメントにそのランタイム・クラスをロードします。

    kubectl apply -f kata-runtime.yaml

    これで、ランタイム・クラスkata-containersをポッド構成ファイル内で使用して、コンテナをkata-containersランタイムの使用によってKataコンテナとして実行するように指定できます。 このランタイム・クラスを使用したポッドの作成の例は、「Kataコンテナの作成」を参照してください。

  2. (オプション) runcのランタイムを指定する必要がある場合は、同様の方法でそれを実行できます。 これは必要に応じて行う構成ステップです。 runcはデフォルトのランタイムであるため、別途指定しないかぎり、ポッドは、自動的にruncを使用して実行されます。 このファイルの名前はrunc-runtime.yamlです。

    kind: RuntimeClass
    apiVersion: node.k8s.io/v1
    metadata:
        name: native
    handler: runc 

    Kubernetesデプロイメントにそのランタイム・クラスをロードします。

    kubectl apply -f runc-runtime.yaml

    ランタイム・クラスnativeをポッド構成ファイル内で使用して、コンテナをruncランタイムの使用によってrunCコンテナとして実行するように指定できます。

  3. kubectl get runtimeclassを使用して、Kubernetesクラスタで使用可能なランタイム・クラスのリストを表示できます。 たとえば:

    kubectl get runtimeclass
    NAME              CREATED AT
    kata-containers   2019-09-11T06:48:12Z
    native            2019-09-11T07:08:56Z