首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

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

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

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

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