zhoudaiyu

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

  •  
  •   zhoudaiyu ·
    PRO
    · May 19, 2022 · 2264 views
    This topic created in 1468 days ago, the information mentioned may be changed or developed.
    之前流量是从硬件负载均衡进来的,负载均衡直接将 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 replies    2022-05-19 18:18:02 +08:00
    anonydmer
        1
    anonydmer  
       May 19, 2022   ❤️ 1
    排个版吧。

    1. 你如果非要将静态资源挂载到容器的话,很多种方案,nfs ,s3 等协议都可以挂载到容器
    2. k8s 有 external service 可以直接用
    3. 不明白你的水平调用是什么意思。k8s 直接用 load balance 类型的 service 把 rpc 服务给暴露出去应该就可以了吧,不需要经过 ingress ;如果 k8s 集群是自建的话自己用各种开源方案实现个 LB 的支持也不难
    lmshl
        2
    lmshl  
       May 19, 2022   ❤️ 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 暴露给客户端就行了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1649 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 16:25 · PVG 00:25 · LAX 09:25 · JFK 12:25
    ♥ Do have faith in what you're doing.