3.1 KiB
title | content_type | weight |
---|---|---|
基本的なDaemonSetを構築する | task | 5 |
このページでは、Kubernetesクラスターの全てのノード上でPodを実行する、基本的な{{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}}を構築する方法について示します。 ホストからファイルをマウントし、Initコンテナを使用してその内容をログに記録して、pauseコンテナを利用するという単純なユースケースを取り上げます。
{{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
DaemonSetの動作を示すために、少なくとも2つのノード(1つのコントロールプレーンと1つのワーカーノード)を持つKubernetesクラスターを用意します。
DaemonSetの定義
このタスクでは、Podのコピーが全てのノード上でスケジュールされるようにする、基本的なDaemonSetが作成されます。
PodはInitコンテナを使用してホストから/etc/machine-id
の内容を読み込んでログに記録し、メインのコンテナはPodを実行し続けるpause
コンテナとなります。
{{% code_sample file="application/basic-daemonset.yaml" %}}
-
(YAML)マニフェストに基づいたDaemonSetを作成します:
kubectl apply -f https://k8s.io/examples/application/basic-daemonset.yaml
-
適用すると、DaemonSetがクラスター内の全てのノードでPodを実行していることを確認できます:
kubectl get pods -o wide
出力には、以下のようにノード毎に1つのPodが一覧表示されます:
NAME READY STATUS RESTARTS AGE IP NODE example-daemonset-xxxxx 1/1 Running 0 5m x.x.x.x node-1 example-daemonset-yyyyy 1/1 Running 0 5m x.x.x.x node-2
-
ホストからマウントされたログディレクトリをチェックすることで、ログに記録された
/etc/machine-id
ファイルの内容を調べることができます:kubectl exec <pod-name> -- cat /var/log/machine-id.log
<pod-name>
は1つのPodの名前です。
{{% heading "cleanup" %}}
DaemonSetを削除するためには、次のコマンドを実行します:
kubectl delete --cascade=foreground --ignore-not-found --now daemonsets/example-daemonset
この単純なDaemonSetの例では、Initコンテナやホストパスボリュームなどの主要なコンポーネントを紹介しており、より高度なユースケースに応じて拡張することができます。 詳細についてはDaemonSetを参照してください。