V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX  ›  Kubernetes

想在 k8s 集群用上 Ingress,有几个问题现在想请教下大家

  •  
  •   zhoudaiyu · 2022-05-19 17:19:32 +08:00 · 1834 次点击
    这是一个创建于 922 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前流量是从硬件负载均衡进来的,负载均衡直接将 HTTPS 请求转发给挂在上面的 Nginx 服务器,Nginx 服务器实现动态资源和静态资源的分离,静态资源(部署在本机)直接返回,动态资源再根据配置去请求虚机或者 K8S 部署的 web 服务。现在想在 K8s 集群扩容几台边界节点充当网关的角色(和 Nginx 功能相同),即( 1 )可以像 Nginx 一样处理静态资源(存储在本机的 html 、js 、css 、图片等);( 2 )流量不单可以调度到本集群中,也可以调度到其他节点(虚机)。目前想采用 ingress-nginx 的方案,但是有几个问题想问问大家:( 1 )如何处理静态资源?将静态资源目录挂载到 nginx 的容器中?我看官方有个 Default Backend 可以处理静态资源,但是讲的比较少;( 2 )转发到其他非集群内的节点用什么方案比较好?建一个 headless service ?还是直接在 nginx 的配置文件中指定转发到其他节点呢?( 3 )目前公司用的微服务框架还是比较老版本的 Dubbo ( protobuff rpc ),如果需要支持虚机访问容器内部的 rpc 服务,Ingress 应该没法解决这种水平方向的流量调用吧?
    2 条回复    2022-05-19 18:18:02 +08:00
    anonydmer
        1
    anonydmer  
       2022-05-19 17:55:21 +08:00   ❤️ 1
    排个版吧。

    1. 你如果非要将静态资源挂载到容器的话,很多种方案,nfs ,s3 等协议都可以挂载到容器
    2. k8s 有 external service 可以直接用
    3. 不明白你的水平调用是什么意思。k8s 直接用 load balance 类型的 service 把 rpc 服务给暴露出去应该就可以了吧,不需要经过 ingress ;如果 k8s 集群是自建的话自己用各种开源方案实现个 LB 的支持也不难
    lmshl
        2
    lmshl  
       2022-05-19 18:18:02 +08:00   ❤️ 1
    1. 不要在 ingress 里做,而是另启一个专门托管静态的 nginx ,前端静态可以直接在上面叠层,或者大前端替换成 node 做服务器端渲染都是可以的。不愿意叠层的话还可以用卷映射进去
    2. https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
    3. http 和 http2 上的 rpc 是可以被 ingress 负载均衡的,但主要是处理来自集群外的入站流量。如果是集群内的话也可以用 istio 之类的方案。不太了解 dubbo 不敢说,如果客户端本身支持负载均衡的话,可以直接 headless service 把目标 ip 暴露给客户端就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.