特定のノード上でのみPodを実行する
このページでは、DaemonSetの一部として、特定のノード上でのみPodを実行する方法を説明します。
始める前に
Kubernetesクラスターが必要、かつそのクラスターと通信するためにkubectlコマンドラインツールが設定されている必要があります。 このチュートリアルは、コントロールプレーンのホストとして動作していない少なくとも2つのノードを持つクラスターで実行することをおすすめします。 まだクラスターがない場合、minikubeを使って作成するか、 以下のいずれかのKubernetesプレイグラウンドも使用できます:
特定のノードでのみPodを実行する
DaemonSetを実行したいが、そのデーモンPodをローカルのソリッドステートドライブ(SSD)ストレージを備えたノードでのみ実行する必要があるとします。 例えば、Podがノードにキャッシュサービスを提供し、低遅延のローカルストレージが利用可能な場合にのみキャッシュが有用である場合などです。
ステップ1: ノードにラベルを追加する
SSDを持つノードにssd=trueというラベルを追加します。
kubectl label nodes example-node-1 example-node-2 ssd=true
ステップ2: マニフェストを作成する
SSDのラベルが付けられたノード上にのみデーモンPodを配置するDaemonSetを作成してみましょう。
次に、nodeSelectorを使用して、DaemonSetがssdラベルに"true"が設定されたノード上でのみPodを実行するようにします。
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ssd-driver
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: ssd-driver-pod
  template:
    metadata:
      labels:
        app: ssd-driver-pod
    spec:
      nodeSelector:
        ssd: "true"
      containers:
        - name: example-container
          image: example-imageステップ3: DaemonSetを作成する
kubectl createまたはkubectl applyを使用してマニフェストからDaemonSetを作成します。
別のノードにssd=trueというラベルを付けてみましょう。
kubectl label nodes example-node-3 ssd=true
ノードにラベルを付けると、それによってコントロールプレーン(正確にはDaemonSetコントローラー)がトリガーされ、そのノード上で新しいデーモンPodが実行されます。
kubectl get pods -o wide
出力は次のようになります:
NAME                              READY     STATUS    RESTARTS   AGE    IP      NODE
<daemonset-name><some-hash-01>    1/1       Running   0          13s    .....   example-node-1
<daemonset-name><some-hash-02>    1/1       Running   0          13s    .....   example-node-2
<daemonset-name><some-hash-03>    1/1       Running   0          5s     .....   example-node-3
  最終更新 May 31, 2025 at 4:29 PM PST: [ja] Translate d/content/en/docs/tasks/manage-daemon/pods-some-nodes.md into Japanese (abc62d63a2)