我的情况是,目前,我正在运行我的应用程序作为守护进程设置,并希望将Datadog集成到我的基础架构中。 据我所知,守护进程设置的目的是确保每个节点上的一个pod在每个节点上运行。
在这里,我想将我的应用程序指向datadog代理程序,以便将数据提供给它。
我已经定义Service
Nodeport
类型来公开代理的端口。
我在我的应用程序定义中提供了服务名称并且它可以工作。对于一个节点。
现在当我有更多节点时会发生什么? k8s是否足够聪明,可以在同一节点上路由到代理,或者有一个情况,我的应用程序的pod可能会在不同的节点上调用代理?这是正确的设置吗?
答案 0 :(得分:0)
比使用DaemonSets运行应用程序更好的方法是使用部署,这样您就不会将应用程序与群集中的节点数联系起来。
然后,您可以将datadog代理映像部署为具有集spec.template.spec.affinity
的DaemonSet,该集合选择运行应用程序的pod的节点。这将确保您的应用程序运行的每个节点都有一个datadog代理。
另一种选择是将datadog代理容器部署在与应用程序容器相同的窗格中。在这种情况下,您可以通过localhost访问代理并一起扩展,但最终可能不仅仅是每个节点的代理,因此我更喜欢具有亲和力的DaemonSet。
答案 1 :(得分:0)
我的团队将其作为守护程序集运行以收集节点指标,但仅将其作为普通集群IP服务公开,以便以编程方式从集群中的其他应用程序发送数据。您不需要在节点端口上公开它,除非您需要从群集外部访问它并且没有像入口控制器那样的服务感知负载平衡器。 (这将是一个非常奇怪的用例,因此您可能不需要在节点端口上公开它。)