求教:外部服务访问 kubernetes 集群中服务的方式该如何选择? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
douz
V2EX    Kubernetes

求教:外部服务访问 kubernetes 集群中服务的方式该如何选择?

  •  
  •   douz 278 天前 2456 次点击
    这是一个创建 278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求:k8s 集群中部署了一个 prometheus 服务,现在外部环境的服务需要访问这个服务的 /api/v1/query 接口,访问不频繁,主要是实现查询指标功能。现在有两种方式,不知道哪种比较合适,求大佬科普。

    1. 给 prometheus 服务开一个主机端口 9090 ,通过 ip:9090/api/v1/query 的方式访问,这个应该最常见,但是需要暴露一个主机端口。

    2. 通过 api server 的 proxy 功能访问,路径为: https://ip:8443/api/v1/namespaces/kube-system/pods/prometheus/proxy/api/v1/query 。这种方式好像不太常见,不知道是否推荐。

    24 条回复    2025-01-10 23:44:40 +08:00
    hackroad
        1
    hackroad  
       278 天前   1
    ingress
    douz
        2
    douz  
    OP
       278 天前
    @hackroad 这个了解过一点,但是不想在集群中做额外的操作,加上对 k8s 也不太熟悉
    Frankcox
        3
    Frankcox  
       278 天前   1
    ingress 当成一个正常的 web 服务暴露
    douz
        4
    douz  
    OP
       278 天前
    @Frankcox 这个需求用不上这个,目前的访问逻辑就是通过集群 ip:port 去访问
    defunct9
        5
    defunct9  
       278 天前   1
    ingress
    xcai
        6
    xcai  
       278 天前   1
    但是不想在集群中做额外的操作 结论:无,就用 NodePort 吧
    seers
        7
    seers  
       278 天前 via Android   1
    kebevpn
    Frankcox
        8
    Frankcox  
       278 天前
    @douz #4 那就 NodePort 暴露端口吧
    defunct9
        9
    defunct9  
       278 天前
    违反逻辑啊,开 ingress 跟开 NodePort 区别不大啊。尤其开 NodePort ,每个 worker node 上都得捅个口子,前面的 LB 又怎么搞
    brom111
        10
    brom111  
       278 天前   1
    这两种相比肯定是第一种好 Nodeport
    vkillwucy
        11
    vkillwucy  
       278 天前 via Android   1
    能用就行那就 nodeport
    JoeJasper
        12
    JoeJasper  
       278 天前   1
    Gateway API
    douz
        13
    douz  
    OP
       278 天前
    @defunct9 #9 确实有点不妥,这也是考虑第二种方式的原因。
    mightybruce
        14
    mightybruce  
       278 天前   1
    专业一点都是 ingress, 南北流量 基本都是走 Ingress 或者 LB.
    如果就是玩玩而已,集群可以搞 nodeport
    defunct9
        15
    defunct9  
       278 天前
    弄 ingress 也就 5 分钟的事,有啥难度。反倒是 nodeport 或者 api 反代麻烦死
    anubu
        16
    anubu  
       278 天前   1
    第二种似乎更不妥,对一个业务暴露控制平面容易挖坑。
    cheng6563
        17
    cheng6563  
       278 天前
    暴露主机端口很正常的
    cheng6563
        18
    cheng6563  
       278 天前   1
    尤其是一些非 HTTP 端口不能用 Ingress 的
    zealot0630
        19
    zealot0630  
       278 天前 via Android   1
    gateway API
    xwh
        20
    xwh  
       278 天前   1
    不想用 nodeport ingress 就在集群的 node 节点上装个 nginx ,代理 prometheus 的的 clusterIP 。
    sunzhenyucn
        21
    sunzhenyucn  
       278 天前   1
    Ingress, Ingress 不只是为 http 类端口服务的, 你像 APISIX 就提供了 Stream Proxy 来帮助代理基于 TCP 或 UDP 协议的面向流式的流量, 不过这并不是一个银弹, 适用场景可以参考官方文档。

    P.S. 无利益相关
    julyclyde
        22
    julyclyde  
       278 天前   1
    nodeport 模式都不知道哪个 sb 设计的,需要在所有 node 上协商出同一个端口

    按说你这样普通 http 服务就直接用 api server proxy 就行了; ingress 或者 loadbalancer 模式的 service 有点大材小用
    neilyoone
        23
    neilyoone  
       278 天前   1
    如果是云平台部署的 K8S, 你需要绑定一个 CLB 给
    如果是自建数据中心的 K8S, 你需要部署一个 MetalLB 来作为 HA IP 提供者

    单纯的 ingress 并不能将流量从外部打通到 K8S 内部
    homolabby
        24
    homolabby  
       278 天前   1
    图省事 host port 就够了,就在 container 的 port 里面加上主机端口,想要好一点就 metal lb 或者 ingress ,但是这两者本质依然是 node port
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     989 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 18:41 PVG 02:41 LAX 11:41 JFK 14:41
    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