DaemonSet で始める Kubernetes
DaemonSet は Kubernetes の特殊なコントローラで、クラスターのノードすべてに 1 つコピーを実行します。他のコントローラ(Deployment や ReplicaSet など)とは異なり、DaemonSet は複製数の維持に関与するのではなく、各ノードに 1 つコピーが実行されていることを確認します。
デーモンセットは、すべてのノードでログコレクタ、モニタリングエージェント、ネットワークプロキシなど、システムレベルのサービスを実行するのに一般的に使用されます。デーモンセットを使用することで、クラスタ内のすべてのノードで各ノードでサービスを作成して管理する必要なしに、これらのサービスを実行できます。
デーモンセットの作成に必要な、以下の内容を含む YAML ファイルを定義する必要があります。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: example-daemonset
spec:
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: example/image:latest
上述の YAML ファイルでは、metadata.name が DaemonSet の名前を指定し、spec.selector は DaemonSet に属する Pod を識別するセレクタを定義しています。spec.template は各ノードで作成される Pod のテンプレートを定義しており、spec.containers はコンテナの構成を定義しています。
kubectl apply -f コマンドを使用して、YAML ファイルからデモンセットを作成できます。
デーモンセットを作成すると、Kubernetes は各ノードに自動的に Pod を作成します。これにより、各ノードに確実にレプリカが 1 つ実行されます。新しいノードが追加された場合、Kubernetes は自動的に新しいノードに Pod を作成します。ノードが削除された場合、Kubernetes は対応する Pod も自動的に削除します。
DaemonSet の Pod のステータスを確認するには、`kubectl get pods` コマンドに DaemonSet の名前を指定します。特定のノード上の Pod を確認するには、`kubectl get pods -o wide –field-selector spec.nodeName=` コマンドを使用します。
DaemonSet に含まれる Pod を更新するには、YAML ファイル内の関連構成を直接変更し、`kubectl apply -f ` コマンドを使用して再適用します。そうすると、Kubernetes が自動的に DaemonSet の Pod を更新します。
通常の構成オプションに加え、DaemonSet はノードの親和性、テイントの許容、アップグレードの戦略など多くのその他の構成オプションもサポートしています。詳細は Kubernetes の公式ドキュメントを参照してください。