機械翻訳について

3 Kata Containersの使用

重要:

このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。

このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。

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

 Kata Containersのインストール

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

 ハードウェアのチェック

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

sudo kata-runtime kata-check

kata-runtimeコマンドの使用方法の詳細は、kata-runtime --helpコマンドを使用します。

Kataコンテナの作成

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

例3-1 NGINXコンテナの作成

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

NGINX Kataコンテナを作成するには、次の手順を実行します。

  1. kubectlコマンドを使用してKubernetesクラスタに接続するように設定されているホストで、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. kubectl describeコマンドを使用して、ポッドをホストしているワーカー・ノードやコンテナIDなど、ポッドの詳細ビューを表示します。

    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