3 Kata Containersの使用
この章では、Kataコンテナの作成について説明します。 この情報を使用すると、インストールが成功したこと、およびランタイム・エンジンとしてkata-runtime
を使用してコンテナを作成できることを確認できます。
Kata Containersのインストール
Kataコンテナをデプロイするには、まずkubernetes
モジュールを含むOracle Cloud Native Environmentを設定する必要があります。 Oracle Cloud Native Environmentのインストールおよびデプロイの詳細は、「スタート・ガイド」を参照してください。
ハードウェアのチェック
kata-runtime kata-check
コマンドを使用して、ハードウェアでKata Containersを実行できるかどうかをテストできます。 このコマンドを使用するには、まず、Kubernetesデプロイメントを実行しておく必要があります。 Kubernetesワーカー・ノードで、次を実行します。
sudo kata-runtime kata-check
kata-runtime
コマンドの使用方法の詳細は、kata-runtime --help
コマンドを使用します。
Kataコンテナの作成
この項では、ランタイム・エンジンとしてkata-runtime
を使用してコンテナを作成するために使用する、Kubernetesポッド構成ファイルの作成の例を示します。 Kata Containersを作成する前に、kata-runtime
のKubernetesランタイム・クラスを設定します。 ランタイム・クラスの設定の詳細は、「ランタイム・クラスの設定」を参照してください。
例3-1 NGINXコンテナの作成
この例では、Kubernetesポッド構成ファイルを使用してKataコンテナを作成します。 このポッド構成ファイルにより、コンテナのテスト時によく使用される、NGINX Webサーバー・コンテナが作成されます。
NGINX Kataコンテナを作成するには、次の手順を実行します。
-
kubectl
コマンドを使用してKubernetesクラスタに接続するように設定されているホストで、Kubernetesポッド構成ファイルを作成します。 コンテナをカタ・コンテナとして実行するように指定するには、ポッド・ファイルで表記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: container-registry.oracle.com/olcne/nginx:1.17.7 ports: - containerPort: 80
-
kubectl apply
コマンドでkata-nginx.yaml
ファイルを使用して、Kataコンテナを作成します:kubectl apply -f kata-nginx.yaml
-
ポッドが作成されたことを確認するには、
kubectl get pods
コマンドを使用します:kubectl get pods
出力は次のようになります:
NAME READY STATUS RESTARTS AGE kata-nginx 1/1 Running 0 11s
-
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: <date> 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 ...
-
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
コマンドを使用します。 -
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
の短縮バージョンであることに注意してください。 -
コンテナの詳細情報を取得するには、
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": "<date>", "network": { "ip": "10.244.3.3" ...
-
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
と同じであることに注意してください。 -
コントロール・プレーン・ノードで
kubectl delete
コマンドを使用して、ポッドを削除できます:kubectl delete pod kata-nginx