DaemonSetは、各ノードで1つのレプリケートポッドのみが実行されるようにします。 新しいノードがクラスターに追加された場合、ポッドはそのノードにスケジュールされます。 DaemonSetを使用して、各ノードでログ収集デーモン、監視デーモン、またはシステム管理デーモンを実行できます。 このトピックでは、Container Service for Kubernetes (ACK) クラスターのDaemonSetを作成する方法について説明します。
前提条件
ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
kubectlクライアントがACKクラスターに接続されています。 詳細については、「kubectlを使用したACKクラスターへの接続」をご参照ください。
手順
ACKコンソールまたはkubectlを使用してDaemonSetを作成できます。
ACKコンソールでDaemonSetを作成する
イメージからDaemonSetを作成する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
の右上隅にDaemonSetsページをクリックします。イメージから作成.
DaemonSetのパラメーターを設定します。
[基本情報] ステップで、アプリケーションの基本設定を行います。 パラメーターの詳細については、「イメージからのデプロイの作成」をご参照ください。
[コンテナー] ステップで、1つ以上のコンテナーを設定します。 パラメーターの詳細については、「イメージからのデプロイの作成」をご参照ください。
[詳細] ステップで、DaemonSetの詳細設定を構成します。
DaemonSetは、スケジュール不可状態のノードにポッドをスケジュールできます。 特定のノードでのみポッドを実行するには、ノードアフィニティ、ポッドアフィニティ、または許容範囲ルールを設定します。 パラメーターの詳細については、「イメージからのデプロイの作成」をご参照ください。
クリック作成.
DaemonSetが作成されたら、DaemonSetページでDaemonSetを表示できます。
説明DaemonSetsページで、[一括再デプロイ] を選択して、複数のDaemonSetsを再デプロイします。
YAMLテンプレートからDaemonSetを作成する
の右上隅にDaemonSetsページをクリックします。YAMLから作成する.
On the作成ページでDaemonSetを設定します。テンプレートセクションにアクセスします。
の下部にテンプレートセクション、をクリック作成.
DaemonSetが作成されたら、DaemonSetページでDaemonSetを表示できます。
kubectlを使用してDaemonSetを作成する
DaemonSetは、スケジュール不可状態のノードにポッドをスケジュールできます。 指定したノードでのみポッドを実行するには、次のパラメーターを設定します。
パラメーター | 説明 |
nodeSelector | ポッドは、指定されたラベルを持つノードにのみスケジュールされます。 |
nodeAffinity | ノードのアフィニティ ポッドは、ノードラベルに基づいてノードにスケジュールされます。 ノードアフィニティを使用すると、他のマッチングルールを設定できます。 |
podAffinity | ポッド親和性。 ポッドは、ポッドラベルに基づいてノードにスケジュールされます。 ポッドは、アフィニティルールに一致するポッドを実行するノードにのみスケジュールされます。 |
kubectlを使用してDaemonSetを作成する方法を示すために、この例ではfluentd-elasticsearchという名前のDaemonSetを作成します。
daemonset.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
apiVersion: apps/v1 種類: DaemonSet メタデータ: 名前: fluentd-elasticsearch namespace: kube-system ラベル: k8s-app: fluentd-logging spec: セレクタ: matchLabels: 名前: fluentd-elasticsearch template: メタデータ: ラベル: 名前: fluentd-elasticsearch 仕様: 寛容: # この許容範囲は、マスターノードでデーモンセットを実行できるようにすることです # マスターがポッドを実行できない場合は削除します - key: node-role.kubernetes.io/master effect: NoSchedule コンテナ: -名前: fluentd-elasticsearch 画像: quay.io/fluentd_elasticsearch/fluentd:v2.5.2 resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: -name: varlog mountPath: /var/log -name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true terminationGracePeriodSeconds: 30 volumes: -name: varlog hostPath: path: /var/log -name: varlibdockercontainers hostPath: パス: /var/lib/docker/containers
次のコマンドを実行してDaemonSetを作成します。
kubectl create -f daemonset.yaml
daemonset.apps/fluentd-elasticsearch created
が返された場合、DaemonSetが作成されます。
次のステップ
DaemonSetを作成したら、次の操作を実行できます。
[DaemonSets] ページで、[Label] フィールドをクリックし、アプリケーションに指定したキーと
値
を入力し、[OK] をクリックしてアプリケーションをフィルタリングします。[DaemonSets] ページで、作成したDaemonSetを見つけ、[操作] 列の [詳細] をクリックします。 詳細ページでは、DaemonSetに関する基本情報を表示できます。 情報には、ポッド、アクセス方法、イベント、およびログが含まれます。
[DaemonSets] ページで、作成したDaemonSetを見つけ、[操作] 列の
を選択して、DaemonSetのYAMLファイルを表示します。 を選択して、DaemonSetを削除することもできます。