2

我的情况是,目前,我将我的应用程序作为守护程序集运行,并希望将 Datadog 集成到我的基础架构中。据我了解,守护程序集的目的是确保每个集的一个 pod 在每个节点上运行。

在这里,我想将我的应用程序指向 datadog 代理,以便它将数据输入其中。我已经定义了一个Service类型Nodeport来公开代理的端口。我在我的应用程序定义中提供了服务名称,它可以工作。对于一个节点。当我有更多节点时会发生什么?k8s 是否足够聪明,可以路由到相同节点上的代理,或者在某些情况下,我的应用程序的 pod 可能会调用不同节点上的代理?这是正确的设置吗?

4

2 回答 2

0

比使用 DaemonSet 运行应用程序更好的方法是使用部署,这样您就不会将应用程序与集群中的节点数量联系起来。

然后,您可以将 datadog 代理映像部署为 DaemonSet,其中包含一组spec.template.spec.affinity选择运行应用程序 pod 的节点。这将确保您在应用程序运行的每个节点中都有一个 datadog 代理。

另一种选择是将 datadog 代理容器部署在与应用程序容器相同的 pod 中。在这种情况下,您可以通过 localhost 访问代理并一起扩展,但最终每个节点可能不止一个代理,因此我更喜欢具有亲和力的 DaemonSet。

于 2017-10-13T22:56:40.763 回答
0

我的团队将其作为守护程序集运行以收集节点指标,但仅将其公开为普通集群 IP 服务,以便以编程方式从集群中的其他应用程序向其发送数据。您不需要在节点端口上公开它,除非您需要从集群外部访问它并且没有像入口控制器这样的服务感知负载均衡器。(这将是一个非常奇怪的用例,因此您可能不需要在节点端口上公开它。)

于 2017-10-14T04:44:41.980 回答