容器服务ACKk8s的前端是指什么组件?完整链路是什么?客户端到后端经过了多少层代理?理论上代理层可以记录到客户端真实ip,但也要设置,最后在后端通过代理层传递的Http Request Header获取。现在的链路是,阿里云SLB监听部署在k8s上的前端应用(nginx代理,nodeport暴露),前端通过SVC访问部署在同一集群内的后端应用
在前端开发中,"前端"通常指的是用户可以直接看到的页面,如HTML、CSS和JavaScript等。在Kubernetes中,"前端"可能指的是负责接收用户请求的服务,这些请求可能被转发到其他服务进行处理。
在你的架构中,前端可能指的是Nginx代理服务器,它接收来自用户的请求,并将其转发到后端应用。在这个过程中,客户端的请求可能会经过多个层次的代理,包括SLB(Server Load Balancer)、Nginx代理服务器和Kubernetes Service。
理论上,每个代理层都可以记录客户端的真实IP地址,并通过HTTP头传递给后端应用。然而,这需要每个代理层都配置正确,以便在转发请求时包含客户端的IP地址。
在你的架构中,客户端的请求首先到达SLB,然后由SLB转发给Nginx代理服务器,Nginx代理服务器再将请求转发到Kubernetes Service,最后由Kubernetes Service将请求转发到后端应用。在这个过程中,客户端的请求可能会经过至少3层的代理。
至于如何获取客户端的真实IP地址,这取决于具体的实现方式。在某些情况下,客户端的IP地址可能会被包含在HTTP头中,如X-Forwarded-For头。在其他情况下,可能需要更复杂的配置和逻辑来实现这一点。
那 nginx 的 service 有个 external network policy 的字段,要先改成 local,否则你 nginx 拿到的都是 kube-proxy 的 ip。要把所有的woker节点,都挂在SLB的监听上了,走了 kube-proxy 就只能拿到 kube-proxy 的 ip 。请求到了 vm 需要在本 vm 有 pod,不然会报错,之前 external network policy 的字段是 cluster,请求一定先走 kube-proxy奇磊。此回答整理自钉群“容器服务ACK 用户交流-1群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。