このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
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項のランタイム・クラスの設定を参照してください。
この例では、Kubernetesポッド構成ファイルを使用してKataコンテナを作成します。 このポッド構成ファイルにより、コンテナのテスト時によく使用される、NGINX Webサーバー・コンテナが作成されます。
-
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
-
kubectl applyコマンドで、
kata-nginx.yaml
ファイルを使用してKataコンテナを作成します。kubectl apply -f kata-nginx.yaml
pod/nginx-kata created -
ポッドが作成されたことを確認するには、kubectl get podsコマンドを使用します。
kubectl get pods
NAME READY STATUS RESTARTS AGE kata-nginx 1/1 Running 0 11s -
ポッドをホストしているワーカー・ノードやコンテナ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 ... -
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": "2019-09-12T01:53:35.552628639+01:00", "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
pod "kata-nginx" deleted