このセクションでは、DaemonSet の作成について紹介します。 DaemonSet は各ノードに Pod を一つずつ配置するリソースとなります。そのため、各 Pod が出力するログをホスト単位で収集する Fluetd や、各 Pod のリソース使用状況やノードの状態をモニタリングする Datadog など、全 Node 上で必ず動作させたいプロセスのために使用することができます。

サンプルのマニフェストファイルを新規作成し、以下コードを記述します。

[root@kube-master sample-daemonset]# vi sample-daemonset.yaml 

kind に DaemonSet を指定します。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: sample-daemonset
spec:
  selector:
    matchLabels:
      app: sample-app
  template:
    metadata:
      labels:
        app: sample-app
    spec:
      containers:
        - name: nginx-container
          image: nginx:1.12

Master サーバーから 作成したマニフェストを実行し、Kubernetes クラスタ上にリソースを作成します。

[root@kube-master sample-daemonset]# kubectl apply -f sample-daemonset.yaml 
daemonset.apps/sample-daemonset created
[root@kube-master sample-daemonset]# 

Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。各ノードに Pod が 一つずつ起動していることが確認できます。

[root@kube-master sample-daemonset]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES
sample-daemonset-fx849   1/1     Running   0          12s   10.244.1.148   kube-work1   <none>           <none>
sample-daemonset-gt9sh   1/1     Running   0          12s   10.244.2.77    kube-work2   <none>           <none>
[root@kube-master sample-daemonset]# 

Master サーバーから 作成した DaemonSet リソースを削除します。

[root@kube-master sample-daemonset]# kubectl delete daemonset sample-daemonset
daemonset.extensions "sample-daemonset" deleted
[root@kube-master sample-daemonset]# 

Master サーバーから Kubernetes クラスタ上の Pod リソースを確認します。ここでは、DaemonSet リソースで作成した Pod が削除されていることが確認できます。

[root@kube-master sample-daemonset]# kubectl get pods -o wide
No resources found.
[root@kube-master sample-daemonset]#