特定のノード上でのみPodを実行する
このページでは、DaemonSetの一部として、特定のノード上でのみPodを実行する方法を説明します。
始める前に
Kubernetesクラスターが必要、かつそのクラスターと通信するためにkubectlコマンドラインツールが設定されている必要があります。 このチュートリアルは、コントロールプレーンのホストとして動作していない少なくとも2つのノードを持つクラスターで実行することをおすすめします。 まだクラスターがない場合、minikubeを使って作成するか、 以下のいずれかのKubernetesプレイグラウンドも使用できます:
- Killercoda
- KodeKloud
- Play with 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)