我们正在利用Elasticsearch和Kibana的opendistro版本在Kubernetes上建立ELK堆栈。我们还使用Logstash的OSS版本来导入日志。在ELK堆栈/ Kubernetes群集的前面,有一个运行Nginx的VM,它充当外部负载平衡器。
问题在于在通过UDP发送日志时保留客户端IP地址。使用TCP没有问题,因为我们可以在logstash输入和nginx输出上使用proxy_protocol。但是,使用UDP时,我们无法保留客户端IP。
拓扑:
日志已成功发送到logstash并被吸收到Elasticsearch中,我们可以在Kibana中查看它们。但是,客户端IP是托管Logstash Pod的k8s节点的IP。
我们尝试对此进行研究,发现应该将ExternalTrafficPolicy设置为“ Local”,而不是“ Cluster”。但是,当我们这样做时,我们发现日志停止进入,并且在Kibana中没有看到日志。一旦我们将服务修补到“群集”,日志便开始进入。
有人知道如何进行吗?