Menu

DaemonSetの設定

DaemonSetは全ノード(物理マシン)にPodを配置していくコントローラーです。たとえば、2ノード構成時、DeploymentでPod数2を指定した場合、片方のマシンで2Pod起動することがありますが、DaemonSetは両ノードで起動します(公式リファレンス参照)。

Deploymentの設定が完了している場合、YAML設定のうちkindの指定を変更すればDaemonSetとして動作します(非互換のオプションを指定しているとエラーになる可能性はあり)。

Deployment設定の冒頭箇所が以下のようなケースでは、

apiVersion: apps/v1
kind: Deployment

kindにDaemonSetを指定します。

apiVersion: apps/v1
kind: DaemonSet

apiVersionはkubernetes 1.9の環境でapps/v1を利用できます。v1.8以前の環境ではapps/v1beta2などを指定すれば動作します。
apiVersionについてはバージョン間で挙動が異なる点があり、旧版は時間をかけて廃止されていくため、k8sのバージョンアップに合わせて更新・検証が必要です(公式リファレンス参照)。

LoadBalancerからトラフィックが流入してくる場合、WebサーバなどのフロントサーバをDaemonSetで構成すると負荷分散されます。
ReplicaSetで2pod起動しても1台のノードに乗ってしまうと、けっきょく時分割になってしまい同時に動作しません。コア数が多ければ一定の並列動作も可能かもしれませんが偏りは生じます。

また、監視・ロギングのエージェントなどはノードごとに情報収集すべきツールがあるため、この場合にもDaemonSetを活用できます。