2017-10-12 39 views
1

我的场景是,目前,我将我的应用程序作为守护程序集运行,并且希望将Datadog集成到我的基础架构中。 正如我的理解是,守护进程设置的目的是确保每个节点上运行每个集合的一个吊舱。Kubernetes Daemonset和Nodeports

在这里,我想指出我的应用程序在datadog代理,因此它会将数据提供给它。 我已经定义了Nodeport类型的Service以显示代理的端口。 我在我的应用程序定义中提供了服务名称,它起作用。对于一个节点。 现在当我有更多的节点时会发生什么? k8s是否足够聪明,可以在同一节点上路由到代理,或者存在与我的应用程序一起使用pod可能会在不同节点上调用代理的情况?这是一个正确的设置?

回答

0

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

然后,您可以将数据代理代理映像作为配置为spec.template.spec.affinity的DaemonSet进行部署,以选择运行应用程序窗口的节点。这将确保您的应用程序运行的每个节点中都有一个datadog代理。

另一种选择是在与应用程序容器相同的窗格中部署datadog代理容器。在这种情况下,您可以通过本地主机访问代理并一起扩展,但每个节点的代理最终可能不止一个,因此我偏好具有亲和性的DaemonSet。

0

我的团队将它作为一个守护进程运行,用于收集节点度量标准,但仅将其作为普通群集IP服务公开,以便通过编程从群集中的其他应用程序发送数据。除非需要从集群外部访问它,并且没有入口控制器之类的服务感知负载平衡器,否则无需将其公开在节点端口上。 (这将是一个非常奇怪的用例,因此您不必将其暴露在节点端口上。)