作为一个学习项目,我目前在Kubernetes中运行了一个蜜罐,它运行良好。(唯一令人难过的是,我看不到实际的SRC IP,因为从K8s的角度来看,一切都来自负载均衡器(。
我想制作一个蜜罐集群,并最终制作一个ELK后端,所有日志都将发送到该后端,并将其中的一些可视化。现在我似乎不知道如何为不同的容器使用具有不同端口的1个负载均衡器。有没有更好的方法来解决这个问题?我有点理解1服务1负载均衡器的问题,但我确信我不是唯一一个面临这个问题的人?
感谢您的帮助。提前谢谢。
当谈到在使用外部负载均衡器时保留客户端的源IP时,kubernetes官方文档的这一片段应该完全回答您的问题:
保留客户端源IP
由于实现了此功能目标容器是,而不是客户端的原始源IP。到启用客户端IP的保留,以下字段可以在服务规范中配置(在GCE/Google Kubernetes中支持发动机环境(:
service.spec.externalTrafficPolicy
-表示此服务是否希望将外部流量路由到本地节点或集群范围端点。有两个可用选项:群集(默认(和地方的群集会遮挡客户端源IP,并可能导致第二个跳到另一个节点,但应该具有良好的整体负载分布。本地保留客户端源IP,并避免LoadBalancer和NodePort类型的服务,但存在潜在风险不平衡的流量扩散service.spec.healthCheckNodePort
-指定服务的运行状况检查节点端口(数字端口号(。如果未指定healthCheckNodePort
,服务控制器从集群的NodePort范围中分配一个端口。您可以配置通过设置API服务器命令行选项,--service-node-port-range
。它将使用用户指定的healthCheckNodePort
值(如果由客户端指定(。它只有当CCD_ 6被设置为LoadBalancer并且externalTrafficPolicy
被设置为本地在服务中将
externalTrafficPolicy
设置为本地配置文件将激活此功能。apiVersion: v1 kind: Service metadata: name: example-service spec: selector: app: example ports: - port: 8765 targetPort: 9376 externalTrafficPolicy: Local ### 👈 type: LoadBalancer
关键是将externalTrafficPolicy
设置为Local
,它应该完全解决您保留原始源IP的问题,但请记住,此设置也有一些缺点。这可能会导致交通不那么均衡。正如你可以在这个片段中特别阅读的那样:
有两个可用选项:Cluster
(默认(和Local
Cluster
会遮挡客户端源IP,并可能导致第二次跳到另一个节点,但应具有良好的整体负载分布Local
保留客户端源IP,并避免LoadBalancer和NodePort类型服务的第二跳,但存在潜在的不平衡流量传播风险