开发者社区 > 云原生 > 容器服务 > 正文

容器服务ACKk8s的前端是指什么组件?完整链路是什么?客户端到后端经过了多少层代理?

容器服务ACKk8s的前端是指什么组件?完整链路是什么?客户端到后端经过了多少层代理?理论上代理层可以记录到客户端真实ip,但也要设置,最后在后端通过代理层传递的Http Request Header获取。现在的链路是,阿里云SLB监听部署在k8s上的前端应用(nginx代理,nodeport暴露),前端通过SVC访问部署在同一集群内的后端应用

展开
收起
三分钟热度的鱼 2023-10-25 16:19:13 107 0
2 条回答
写回答
取消 提交回答
  • 在前端开发中,"前端"通常指的是用户可以直接看到的页面,如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头。在其他情况下,可能需要更复杂的配置和逻辑来实现这一点。

    2023-10-26 09:15:12
    赞同 展开评论 打赏
  • 那 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群”

    2023-10-25 16:40:38
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关产品

  • 容器服务Kubernetes版
  • 相关电子书

    更多
    ACK 云原生弹性方案—云原生时代的加速器 立即下载
    ACK集群类型选择最佳实践 立即下载
    企业运维之云原生和Kubernetes 实战 立即下载

    相关镜像