k8s 暴露 TCP 服务有哪些好的实践啊,求指导 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ns2250225
V2EX    程序员

k8s 暴露 TCP 服务有哪些好的实践啊,求指导

  •  
  • nbsp; ns2250225
    ns2250225 2019-02-18 16:32:29 +08:00 7348 次点击
    这是一个创建于 2433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    暂时用过的方案有 ( 1 ) NodePort:需要管理外部的端口,服务一多,配置管理麻烦

    第 1 条附言    2019-02-18 23:22:27 +08:00
    我刚刚使用 [metalLB] ,完成了预期的需求啦,可是 [metalLB] 的 IP 地址池,好像只能用集群 Node 节点所在的 IP 段,而且好像只能配置一段,想问下有没有好的提供 IP 池的方案呀,感谢
    31 条回复    2019-02-19 10:35:14 +08:00
    ZombieMisaka
        1
    ZombieMisaka  
       2019-02-18 16:36:03 +08:00   1
    ingress-nginx 做负载均衡
    ns2250225
        2
    ns2250225  
    OP
       2019-02-18 16:37:29 +08:00
    @ZombieMisaka 这个好像也是要配置 configMap 的端口呀
    ZombieMisaka
        3
    ZombieMisaka  
       2019-02-18 16:52:28 +08:00
    @ns2250225 #2 ingress 不会把对应 service 的端口直接暴露出去啊,只对外暴露 nginx 的端口就好了,nginx 根据域名转发请求到各个 service 中去,不太清楚你想要什么效果,每个 service 当然要对内网开放端口,不然没法正常通信,我也是新手来着,不保证说的都对
    rayingecho
        4
    rayingecho  
       2019-02-18 16:57:24 +08:00
    keepalived
    MetalLB
    alexsunxl
        5
    alexsunxl  
       2019-02-18 16:59:28 +08:00   1
    ingress 顶一个。 之前在迅雷搞 k8s 那一套的时候也是用这个,感觉资料还算多
    ns2250225
        6
    ns2250225  
    OP
      nbsp;2019-02-18 17:02:51 +08:00
    @alexsunxl 感谢回复,请问当时你们用 ingress 是怎样管理那些 configMap 的呀,可以自动生成 configMap 吗,比如创建一个 redis 服务,ingress 自动配好 configMap,外部就能之间连接了,求指导
    rayingecho
        7
    rayingecho  
       2019-02-18 17:11:11 +08:00   1
    @alexsunxl
    @ZombieMisaka
    按我理解 ingress 是工作在七层的, nginx 代理 L4 服务并不属于 ingress 的功能, 而是 nginx-ingress 提供的一个独立特性. 用同一组 nginx 的 DaemonSet 的话会碰到端口冲突问题, 动态部署 nginx 的话 nginx pod 之间本身也需要一个 L4 的 LB 来做代理, 会绕回到 L4 代理的问题上
    jerry
        8
    jerry  
       2019-02-18 17:15:58 +08:00 via iPhone
    tcp 的话貌似只有 NodePort 或 LB 了,ingress 是 7 层的
    ns2250225
        9
    ns2250225  
    OP
       2019-02-18 17:16:39 +08:00
    @rayingecho 感谢回复,其实我现在我只是想简单地对外提供 redis 服务,可是除了用 nodeport 测试成功(老大说不能用 nodeport ),其它都连接不上 redis server,香菇= =,请问有什么好的实践吗
    jerry
        10
    jerry  
       2019-02-18 17:17:35 +08:00 via iPhone
    @jerry 或者 hostPort
    binux
        11
    binux  
       2019-02-18 17:17:58 +08:00 via Android
    -直接用 service provider 的 load balancer-
    rayingecho
        12
    rayingecho  
       2019-02-18 17:20:00 +08:00
    @ns2250225
    跟 #11 说的一样, 最佳办法就是用 external load balancer, 私有云上我只知道 MetalLB 这个方案
    服务数量不多的话用 keepalived 也可以
    defunct9
        13
    defunct9  
       2019-02-18 17:23:32 +08:00
    前面放两个 harproxy,然后 nodeport 暴露出来,这么搞
    zhoulouzi
        14
    zhoulouzi  
       2019-02-18 17:31:11 +08:00   1
    @ZombieMisaka 我没看错的话楼主是 TCP,域名转发什么鬼,ingress-nginx 暴露 TCP/UDP 端口还是需要 nodeport 把端口暴露出去.
    楼主可以尝试用 hostnetwork 部署 ingress-nginx,然后写个服务管理这个 confimap
    但是这个 ingress-nginx 代理长链接(比如 websocket)会出现问题,nginx 频繁被 reload 会导致链接断开.如果你们应用重连做的好可以考虑
    metalLB 针对非云环境实现的负载均衡有很多前提要求,而且目前是 beta,期待吧
    rayingecho
        15
    rayingecho  
       2019-02-18 17:35:40 +08:00
    @zhoulouzi
    长连接问题学习了, 不过 nginx 用 HostNetwork 端口冲突的隐患很大啊
    zhoulouzi
        16
    zhoulouzi  
       2019-02-18 17:52:03 +08:00
    @rayingecho 可以提前规划范围? 我也想不到好办法
    maxmin
        17
    maxmin  
       2019-02-18 19:35:42 +08:00
    #1 #3 说的在理吧, 用 service 了。
    kaneg
        18
    kaneg  
       2019-02-18 19:44:48 +08:00 via iPhone   1
    如果只是 http 协议的话,ingress 是不二选择。
    如果是一般的 TCP 的话,只能用 service。
    而对 service,如果 kubernetes 提供商是 cloud 的话,type 可以用 load balance,而如果是自己安装的,就只能用 nodeport 了。
    用 nideport 的时候只要暴露任意一个 worker 的 IP 即可,如果 worker 不固定,就直接暴露 master 的 IP。
    ifaii
        19
    ifaii  
       2019-02-18 21:19:52 +08:00 via iPhone   1
    nodeport or externalip 任选,不要 hostnetwork
    wkzq
        20
    wkzq 
       2019-02-18 21:57:25 +08:00 via iPhone
    管理 kube 资源可以试试 helm
    bigcat0
        21
    bigcat0  
       2019-02-18 22:13:09 +08:00 via Android   1
    Nodeport 加 LB
    ns2250225
        22
    ns2250225  
    OP
       2019-02-18 23:21:22 +08:00
    @rayingecho 感谢您的推荐呀,我刚刚使用 [metalLB] ,完成了预期的需求啦,可是 [metalLB] 的 IP 地址池,好像只能用集群 Node 节点所在的 IP 段,而且好像只能配置一段,想问下有没有好的提供 IP 池的方案呀,感谢
    Oneneuuu
        23
    Oneneuuu  
       2019-02-18 23:34:53 +08:00
    最近也在考虑
    https://github.com/nginxinc/kubernetes-ingress/blob/master/examples/tcp-udp/README.md
    https://github.com/kubernetes/ingress-nginx
    想用 ingress 实现 L4&L7 的功能.... 好像用 configmap 维护配置文件很麻烦?
    HuHui
        24
    HuHui  
       2019-02-18 23:50:12 +08:00 via Android
    @ns2250225 是因为 redis 消费端取 redis 的节点这个过程中拿到的是 redis 所在 node 节点的 ip 导,而这个 ip 是 k8s 内部 ip,所以不能访问,可以从这个问题着手。
    rayingecho
        25
    rayingecho  
       2019-02-19 00:37:39 +08:00 via iPad
    @ns2250225 L2 模式的话任意挑一个内网的 ip 段就可以
    ns2250225
        26
    ns2250225  
    OP
       2019-02-19 07:54:09 +08:00 via Android
    @rayingecho 可以配置多个内网 IP 的吗
    udumbara
        28
    udumbara  
       2019-02-19 09:10:49 +08:00 via Android
    没人提 ambassador ?
    Tinet
        30
    Tinet  
       2019-02-19 10:25:08 +08:00
    @0312birdzhang nginx-ingress 的 tcp stream 也可以加上 keepalived 吧
    1daydayde
        31
    1daydayde  
       2019-02-19 10:35:14 +08:00
    @Tinet #30 并没有什么卵用,而且 nginx-ingress-controller 在监听的任何一个 pod 有更新时会 reload 一下,长链接全部断开,很酸爽
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1199 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:47 PVG 01:47 LAX 10:47 JFK 13:47
    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