第11章 デーモンセット デーモンセット
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
デプロイとReplicaSetは一般化すると、冗長性のために複数のレプリカを持つサービス(Webサーバなど)を作成することだ。しかし、クラスタ内でPodのセットをレプリケートする理由はそれだけではない。もう一つの理由は、クラスタ内のすべてのノードに単一Podをスケジュールすることだ。一般化すると、Podを各ノードにレプリケートする動機は、何らかのエージェントやデーモンを各ノードに着陸させることであり、これを実現するためのKubernetesオブジェクトがDaemonSetだ。
DaemonSetは、Kubernetesクラスタのノードセット全体でPodのコピーが実行されていることを保証する。DaemonSetは、ログコレクタやモニタリングエージェントなどのシステムデーモンをデプロイするために使用される。DaemonSetsはReplicaSetsと同様の機能を共有しており、どちらも長時間稼働するサービスが想定されるPodを作成し、希望する状態とクラスタの可観測性が一致するようにする。
DaemonSetsとReplicaSetsの類似性を考えると、いつどちらを使うべきかを理解することが重要である。ReplicaSetsは、アプリケーションがノードから完全に切り離され、特殊化せずに特定のノード上で複数のコピーを実行できる場合に使用する。DaemonSetsは、アプリケーションの単一コピーをクラスタ内のすべてのノードまたはサブセットで実行する必要がある場合に使用する。
一般的に、Podが同じノードにコロケートされないようにするために、スケジューリング制限やその他のパラメータを使用すべきではない。ノードごとに単一Podが必要だと発見した場合は、DaemonSetがKubernetesリソースとして適切だ。同様に、ユーザトラフィックに対応するために均質なレプリケートサービスを構築することを発見した場合は、ReplicaSetが使用するKubernetesリソースとして正しいだろう。
ラベルを使用すると、特定のノードでDaemonSet Podを実行できる。たとえば、エッジネットワークに露出しているノードで特殊化侵入検知ソフトウェアを実行したい場合がある。
DaemonSetsを使用して、クラウドベースのクラスタのノードにソフトウェアをインストールすることもできる。多くのクラウドサービスでは、クラスタのアップグレードやスケーリングによって、新しい仮想マシンが削除されたり再作成されたりする。すべてのノードに特定のソフトウェアをインストールしたい(または中央のIT部門から要求されている)場合、この動的不変性インフラアプローチは問題を引き起こす可能性がある。アップグレードやスケールイベントにもかかわらず、特定のソフトウェアがすべてのマシンにインストールされていることを保証するには、DaemonSetが適切なアプローチである。ホストのファイルシステムをマウントして、RPM/DEBパッケージをホストのオペレーティングシステムにインストールするスクリプトを実行することもできる。このようにして、IT部門のエンタープライズ要件を満たすクラウドネイティブクラスターを構築することができる。
デーモンセット・スケジューラ
デフォルトでは、ノードセレクタが使用されない限り、DaemonSetはすべてのノード上にPodのコピーを作成する。 ...