使用LoadBalancer服务而不是Pod

时间:2019-05-20 06:38:23

标签: nginx kubernetes logstash

我们正在利用Elasticsearch和Kibana的opendistro版本在Kubernetes上建立ELK堆栈。我们还使用Logstash的OSS版本来导入日志。在ELK堆栈/ Kubernetes群集的前面,有一个运行Nginx的VM,它充当外部负载平衡器。

问题在于在通过UDP发送日志时保留客户端IP地址。使用TCP没有问题,因为我们可以在logstash输入和nginx输出上使用proxy_protocol。但是,使用UDP时,我们无法保留客户端IP。

拓扑:

  1. 3个运行K8的虚拟机,每个虚拟机都分配了一个特定的Pod,因此Pod不会在集群中四处跳动。
  2. 要公开pod,我们使用将ExternalTrafficPolicy设置为“ Cluster”的ClusterIP服务
  3. nginx VM正在将日志发送到上面指定的ClusterIP服务

日志已成功发送到logstash并被吸收到Elasticsearch中,我们可以在Kibana中查看它们。但是,客户端IP是托管Logstash Pod的k8s节点的IP。

我们尝试对此进行研究,发现应该将ExternalTrafficPolicy设置为“ Local”,而不是“ Cluster”。但是,当我们这样做时,我们发现日志停止进入,并且在Kibana中没有看到日志。一旦我们将服务修补到“群集”,日志便开始进入。

有人知道如何进行吗?

0 个答案:

没有答案