- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Nignx 入口 provides一种公开 tcp 或 udp 服务的方法:你所需要的就是公开 NLB .
但是这样 tcp 服务将公开暴露:NLB 不支持安全组或 acl,而且 nginx-ingress 在代理 tcp 或 udp 时没有任何方法过滤流量。
我想到的唯一解决方案是内部负载均衡器和使用 haproxy 或 iptables 的独立非 k8s 实例,我实际上会根据源 ip 进行限制 - 然后将请求转发/代理到内部 NLB。
也许还有其他方法可以解决这个问题?
最佳答案
不要为此使用 nginx-ingress。要在 nginx-ingress 中获取真实 IP,您必须设置 controller.service.externalTrafficPolicy: Local
,这反过来会改变 nginx-ingress 服务的公开方式 - 使其在节点本地。参见 https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip .这反过来会导致您的 nginx-ingress LoadBalancer 拥有不健康的主机,这会在您的监控中产生噪音(与 NodePort 相反,其中每个节点都公开相同的端口并且健康)。除非您将 nginx-ingress 作为 DaemonSet 运行或使用其他技巧,例如限制将哪些节点添加为后端(考虑调度、缩放),或将 nginx-ingress 移动到一组单独的节点/子网 - IMO 对于这样一个简单的问题,其中的每一个都是非常令人头疼的。有关此问题的更多信息:https://elsesiy.com/blog/kubernetes-client-source-ip-dilemma
使用普通服务类型:LoadBalancer
(经典 ELB)支持:
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups
注释,以防您想从外部管理源范围。在这种情况下,您的流量就像 World -> ELB -> NodePort -> Service -> Pod
一样,没有 Ingress。
关于amazon-web-services - 如何仅针对某些 ip 地址在 Kubernetes 中公开 tcp 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64230672/
我是一名优秀的程序员,十分优秀!