K8S Ingress 只是给局域网用可以吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leiuu
V2EX    Kubernetes

K8S Ingress 只是给局域网用可以吗

  •  
  •   leiuu 2022-01-18 21:48:20 +08:00 4470 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前服务暴露方式主要用的是 NoePort 。

    但担心这种方式重启服务时,有可能被其他服务占用 Port ,需要对其他上游服务屏蔽 Port 变化。

    因此考虑用 Ingress + NGINX Ingress Controller 。

    对上游统一通过 VIP + 80 暴露服务,不同 Service 使用不同 path 区分。

    现在的问题,似乎 Ingress 似乎只支持 Domain 方式...

    请教大佬们,有其他解法嘛...其实我的服务不需要暴露给公网...
    27 条回复    2022-01-20 10:30:38 +08:00
    wellsc
        1
    wellsc  
       2022-01-18 21:50:53 +08:00
    自己搞个内网 dns 就行了
    leiuu
        2
    leiuu  
    OP
       2022-01-18 21:53:22 +08:00
    @wellsc 谢谢大佬 好像可行
    那调用方也得配置一下 使用内网 dns 的吧
    wellsc
        3
    wellsc  
       2022-01-18 22:10:52 +08:00
    @leiuu 那当然,不然连不上
    muchrooms
        4
    muchrooms  
       2022-01-19 02:02:00 +08:00
    ysicing
        5
    ysicing  
       2022-01-19 08:45:18 +08:00
    frankchen
        6
    frankchen  
       2022-01-19 09:19:00 +08:00   1
    土办法,用 nginx 做入口,把 nginx 的节点加入集群;用 nginx 代理 svc
    Judoon
        7
    Judoon  
       2022-01-19 09:24:06 +08:00
    调用方写个 hosts 文件也行
    不写 hosts 文件的话主动在请求的 header 中加上 host 参数也行
    然后,ingress 可以配置默认后端,如果你的服务全部只用 path 区分分发的话,不写 domain ,理论上就可以作为默认的后端
    zliea
        8
    zliea  
       2022-01-19 09:24:56 +08:00   1
    1. NodePort 不是手动指定的么,如果手动指定(每个命名空间分配固定的端口范围),重启不会有冲突。
    2. 我这里使用 K8S 部署的 Nginx 统一控制服务暴露,这个 Nginx 暴露 NodePort (可以一个命名空间一个 Nginx ,分配固定的端口)。
    kennylam777
        9
    kennylam777  
       2022-01-19 09:40:50 +08:00
    Ingress 不是, 是 Ingress 配合 Public IP 的 LoadBalancer 才有

    AWS 的解方法很, LoadBalancer 加一句 annotation 就可以指定在跑, hostname 也 internal-的
    yuzunzhi
        10
    yuzunzhi  
       2022-01-19 10:16:19 +08:00
    首先,NodePort 在 svc 里指定的,重启 deployment 又不会改 svc 。。。怎么可能被占用,第一个担心就是多余的。
    第二,K8S 暴露服务的意思只是暴露服务至集群外,至于集群外是内网还是公网,本来就是自己控制的。
    第三,本身 K8S 内部网络也可以和局域网直接路由打通。
    yuzunzhi
        11
    yuzunzhi  
       2022-01-19 10:20:27 +08:00
    并没有歧视的意思,只是我的建议是,你可以先补一下 K8S 和网络的基础知识。
    monkeyWie
        12
    monkeyWie  
       2022-01-19 10:25:07 +08:00
    第一,ingress 是支持 path 路由的
    第二,ingress service 暴露外网还是内网是可以控制的,如果是用的云厂家的 k8s 可以直接用一个内网 SLB 暴露出去
    arischow
        13
    arischow  
       2022-01-19 10:27:08 +08:00
    ???
    leiuu
        14
    leiuu  
    OP
       2022-01-19 10:46:38 +08:00
    @yuzunzhi
    谢谢 不足挂心 纯技术讨论都 ok
    担心 NodePort 冲突 是猜测有可能多个服务会竞争的问题 假设不能预分配的情况
    考虑有一种场景 :
    例如 A 初次使用 30000 端口运行 之后停了一段时间(种种原因)
    此时恰好 B 服务以未指定端口或者指定端口 30000 的方式创建 那可能会夺走 A 的端口
    A 再启动就会面临 port 变化
    leiuu
        15
    leiuu  
    OP
       2022-01-19 10:51:38 +08:00
    @frankchen @ztechstack 这方法哈哈哈 聪明...
    @Judoon Get ! 我实验下。突然想到,path 变动,例如我新加一个服务,apply yaml, Ingress 如何保证高可用呢...
    MengQuadra
        16
    MengQuadra  
       2022-01-19 10:57:35 +08:00
    以用过的套路云来说,Ingress 可以配合 nginx 注解开白名单给内网
    RRyo
        17
    RRyo  
       2022-01-19 10:57:59 +08:00   1
    traefik 可以 path 规则,但是有个坑,如果 backend 不支持 path 前缀修改,比如某个服务监听:8080/page 提供服务,你用 traefik 把 abc.com/svc/page 转给他,可以配置中间件去掉 svc(这样后面的服务看到的就是 abc.com/page 了),但是这个 api 返回的内容比如 /page/js 下的文件,在页面上会指向 abc.com/page/js ,然后就 404 了(正确应该是 abc.com/svc/page/js ),如果服务可以配置全局路径前置,比如 pathprefix=/svc ,就可以很好的使用,建议还是域名区分,比如 svc1.abc.com svc2.abc.com 分别转给 svc1 和 svc2 ,反正 traefik 支持 acme 的泛域名证书,直接挂上*.abc.com 就行
    zliea
        18
    zliea  
       2022-01-19 10:58:47 +08:00
    主要我这里也必须部署 Nginx ,Nginx 上 lua 来进行认证去状态。
    一直也没研究用 K8S 的解决方案,主要万一哪天不用 K8S ,还得改回来,闹心。
    MengQuadra
        19
    MengQuadra  
       2022-01-19 11:01:59 +08:00
    补充一点, 套路云 Ingress 对应的 SLB 如果没有内网地址可以照着公网 SLB 的监听配置一个。
    这样就能内网访问 Ingress 了_(:з」∠)_
    joesonw
        20
    joesonw  
       2022-01-19 11:51:51 +08:00
    如果没有 lb 组件的网络环境, 可以用 metallb
    ptrees
        21
    ptrees  
       2022-01-19 11:57:00 +08:00
    nodeport 如果全自动分配应该不会有问题,全手动也没问题,一半自动一半手动就会有问题,亲身经历
    leiuu
        22
    leiuu  
    OP
       2022-01-19 12:48:43 +08:00
    @joesonw
    谢谢老哥
    顺了一下官方文档 这个组件不错的 但是如果服务数量多 就得有那么多的 ip pool 去维护
    ip 不够用端口方式区分 那就又和 NodePort 一样了...
    还有个问题是 如何维护内网的 ip pool 是否需要做 vip 之类的
    salmon5
        23
    salmon5  
       2022-01-19 13:35:05 +08:00
    包路服务用负载均衡吧
    joesonw
        24
    joesonw  
       2022-01-19 13:53:43 +08:00
    @leiuu 这个可以给 ingress ip, 服务还是上面各位的方法走 path. 因为上了 ingress, 也得解决 NodePort 访问问题.
    leiuu
        25
    leiuu  
    OP
       2022-01-19 20:50:02 +08:00
    @joesonw metalab 是否可以当做高可用 的 vip 池子用...
    kennylam777
        26
    kennylam777  
       2022-01-20 02:41:15 +08:00
    @leiuu 自己玩 LB 的不如看看 kube-vip
    leiuu
        27
    leiuu  
    OP
       2022-01-20 10:30:38 +08:00
    @kennylam777
    恰好有用到 kube-vip 现在 master 的入口 ip 就是用的它
    请教 假设要再利用 kube-vip 虚拟几个 vip 用作 lb 会和现有部署的冲突吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5165 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 07:11 PVG 15:11 LAX 23:11 JFK 02:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86