このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。

機械翻訳について

第3章 Kata Containersの使用

この章では、Kataコンテナの作成について簡単に説明します。 この情報を使用すると、インストールが成功したこと、およびランタイム・エンジンとしてkata-runtimeを使用してコンテナを作成できることを確認できます。

3.1 Kata Containersのインストール

Kataコンテナをデプロイするには、まずkubernetesモジュールを含むOracle Cloud Native Environmentを設定する必要があります。 Oracle Cloud Native Environmentのインストールおよびデプロイの詳細は、スタート・ガイドを参照してください。

3.2 ハードウェアのチェック

kata-runtime kata-checkコマンドを使用すると、ご使用のハードウェアでKata Containersを実行できるかどうかをテストできます。 このコマンドを使用するには、まず、Kubernetesデプロイメントを実行しておく必要があります。 Kubernetesワーカー・ノードで、次を実行します。

sudo kata-runtime kata-check

kata-runtimeコマンドの使用の詳細は、kata-runtime --helpコマンドを使用して参照してください。

3.3 Kata Containersの作成

この項では、ランタイム・エンジンとしてkata-runtimeを使用してコンテナを作成するために使用する、Kubernetesポッド構成ファイルの作成の例を示します。 Kataコンテナを作成する前に、kata-runtimeのKubernetesランタイム・クラスを設定する必要があります。 ランタイム・クラスの設定の詳細は、1.3項のランタイム・クラスの設定を参照してください。

例3.1 NGINXコンテナの作成

この例では、Kubernetesポッド構成ファイルを使用してKataコンテナを作成します。 このポッド構成ファイルにより、コンテナのテスト時によく使用される、NGINX Webサーバー・コンテナが作成されます。

NGINX Kataコンテナを作成するには、次の手順を実行します。
  1. Kubernetesクラスタへの接続にkubectlコマンドを使用するように設定されたホストで、Kubernetesポッド構成ファイルを作成します。 コンテナをKataコンテナとして実行するように指定するには、ポッド・ファイル内でruntimeClassName: kata-containersという表記法を使用します。 CRI-Oは、ポッド・ファイル内でこのランタイム・クラスを見つけると、コンテナをkata-runtimeに渡してコンテナを実行します。

    このポッド・ファイルの名前はkata-nginx.yamlです。

    apiVersion: v1
    kind: Pod
    metadata:
      name: kata-nginx
    spec:
      runtimeClassName: kata-containers
      containers:
        - name: nginx
          image: nginx
          ports:
          - containerPort: 80
  2. kubectl applyコマンドで、kata-nginx.yamlファイルを使用してKataコンテナを作成します。

    kubectl apply -f kata-nginx.yaml
    pod/nginx-kata created
  3. ポッドが作成されたことを確認するには、kubectl get podsコマンドを使用します。

    kubectl get pods
    NAME READY STATUS RESTARTS AGE kata-nginx 1/1 Running 0 11s
  4. ポッドをホストしているワーカー・ノードやコンテナIDなど、ポッドの詳細を表示するには、kubectl describeコマンドを使用します。

    kubectl describe pod kata-nginx
    Name: kata-nginx Namespace: default Priority: 0 PriorityClassName: <none> Node: worker1.example.com/192.0.2.24 Start Time: Thu, 12 Sep 2019 01:53:35 +0100 Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{}... Status: Running IP: 10.244.3.3 Containers: mycontainer: Container ID: cri-o://8f7d91a1893638498b3bbf74271e4b24361830e29ac65cc361a4c0... Image: nginx Image ID: docker.io/library/nginx@sha256:099019968725f0fc12c4b69b289a347... Port: 80/TCP Host Port: 0/TCP State: Running ...
  5. crictl podsコマンドを使用すると、ワーカー・ノード上のポッドを一覧表示できます。 たとえば、ワーカー・ノードで次のコマンドを実行します。

    sudo crictl pods
    POD ID CREATED STATE NAME NAMESPACE ATTEMPT 03564d1e87df9 1 hours ago Ready kata-nginx default 0 3bfabc5c7eea5 22 hours ago Ready kube-flannel-ds-6fkld kube-system 0 bb0de1bff1cdf 22 hours ago Ready kube-proxy-cc7tb kube-system 0

    このワーカー・ノード上でkata-nginxコンテナが実行されていることがわかります。

    crictlコマンドの使用の詳細は、crictl --helpコマンドを使用して参照してください。

  6. crictl psコマンドを使用すると、ワーカー・ノード上のコンテナについてさらに詳しい情報を確認できます。 次に例を示します。

    sudo crictl ps
    CONTAINER IMAGE NAME POD ID 8f7d91a189363 docker.io/library/ngin... nginx ... 03564d1e87df9 0e9db3f09163a 0a95ca9313ebb9fc3708d8... kube-flannel ... 3bfabc5c7eea5 f8350c6fe0c55 container-registry.ora... kube-proxy ... bb0de1bff1cdf

    このコンテナIDはポッド説明で示されるContainer IDの短縮バージョンであることに注意してください。

  7. コンテナの詳細を確認するには、POD IDを使用してcrictl inspectpコマンドを実行します。 次に例を示します。

    sudo crictl inspectp 03564d1e87df9
    { "status": { "id": "03564d1e87df9d7330e949e67e18252d2a02b0fac585293667d7dd7b92857b9b", "metadata": { "attempt": 0, "name": "kata-nginx", "namespace": "default", "uid": "bfda5be6-d4f7-11e9-8ad8-52540037f605" }, "state": "SANDBOX_READY", "createdAt": "2019-09-12T01:53:35.552628639+01:00", "network": { "ip": "10.244.3.3" ...
  8. コンテナがkata-runtimeで実行されていることを確認するには、kata-runtime listコマンドを使用します。 次に例を示します。

    sudo kata-runtime list
    ID PID STATUS BUNDLE ... 03564d1e87df9d7330e949e67e1825... 20140 running /run/containers/storage/... 8f7d91a1893638498b3bbf74271e4b... 20191 running /run/containers/storage...

    このIDはポッド説明で示されるContainer IDと同じであることに注意してください。

  9. コントロール・プレーン・ノード上でkubectl deleteコマンドを使用すると、ポッドを削除できます。

    kubectl delete pod kata-nginx
    pod "kata-nginx" deleted