V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jitongxi
V2EX  ›  Kubernetes

请问自建 k8s 集群, 自建 loadbalancer 还是直接 nodeport?

  •  
  •   jitongxi · 2023-12-07 11:38:38 +08:00 · 2423 次点击
    这是一个创建于 384 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已知自建 loadbalancer 可以用 metallb ,其他的暂时还未知。 直接使用 nodeport 和 loadbalancer 差距大吗?

    需要基于生产环境的论断,有没有运维大佬支支招建议建议。

    23 条回复    2023-12-09 11:52:48 +08:00
    tudou1514
        1
    tudou1514  
       2023-12-07 11:54:49 +08:00
    如果你是运维,nodeport 最后会累死你,nodeport 不推荐生产使用
    jitongxi
        2
    jitongxi  
    OP
       2023-12-07 12:02:18 +08:00
    @tudou1514 老哥细说
    guanzhangzhang
        3
    guanzhangzhang  
       2023-12-07 12:53:55 +08:00
    @jitongxi nodeport 前后端口不一致,某些应用层面 cmdline 之类的要配置 external-urls ,然后 nodePort 是 nat ,你要封端口,必须 nat 加 mark 很繁琐,还有源 ip 问题
    hzfyjgw
        4
    hzfyjgw  
       2023-12-07 13:02:29 +08:00
    metallb 的二层模式 网络 ip 地址会有限制,BGP 模式可以更灵活
    julyclyde
        5
    julyclyde  
       2023-12-07 13:09:21 +08:00
    想从所有 node 上协商出一个相同的 port 来也不容易吧
    端口号一共才六万多

    nodeport 这玩意,都不知道为啥要发明出来
    HugeNature
        6
    HugeNature  
       2023-12-07 13:17:42 +08:00
    关注下帖子
    defunct9
        7
    defunct9  
       2023-12-07 13:34:52 +08:00
    上面都说 node 是陀屎,可是,gcp 缺省的就是 nodeport
    swulling
        8
    swulling  
       2023-12-07 13:37:41 +08:00 via iPhone
    看你们有没有网络工程师,如果没有不要选 metalb 。

    出了事情你搞不定的。
    bearcatpanda
        9
    bearcatpanda  
       2023-12-07 14:03:19 +08:00
    正常都是 ingress 呀.不过可以 loadbalancer+ingress 一起使用. nodeport 在一般排查问题或者验证部署的情况下会用到
    julyclyde
        10
    julyclyde  
       2023-12-07 17:58:19 +08:00
    @defunct9 “诉诸权威”是不对的
    Fooooo0
        11
    Fooooo0  
       2023-12-07 18:19:30 +08:00
    LVS + nginx ingress nodeport 就可以
    guo4224
        12
    guo4224  
       2023-12-07 20:05:53 +08:00 via iPhone
    每个 pod 一个 ip
    CheckMySoul
        13
    CheckMySoul  
       2023-12-07 21:52:07 +08:00
    MetalLB 、OpenELB 、PureLB 走起。
    jerrycmht
        14
    jerrycmht  
       2023-12-08 09:41:22 +08:00
    nodeport 和 loadbalancer 我怎么感觉差不多啊,loadbalancer 也会起 nodeport 的端口啊,所以说运维问题的我感觉不太对。
    区别在于 loadbalancer 的 vip 可以稳定下来,nodeport 你无法指定集群中的一个节点 ip ,因为这个节点可能会挂,你得再搞个 keepalive 之类的。
    当然如果是 BGP 的,那肯定是 loadbalancer 了。
    3andwich
        15
    3andwich  
       2023-12-08 09:44:33 +08:00
    如果大多数服务要依赖于自编译的 nginx 的插件获取一些值,nodeport 是不是一个好选择?老哥们有其他好方法说一说
    tudou1514
        16
    tudou1514  
       2023-12-08 09:45:07 +08:00
    @jitongxi 默认是 30000-32767 ,你会发现有些开发竟然不够用(实际真的遇到过),而且要不你亲自下场维护每个端口的意义,要不就是最后你都不知道这个端口是哪个服务,你身为一个运维,服务器环境的端口不知道是哪个服务,你觉得你会不会背锅?另外集群任意 ip+nodeport 都可以访问服务,如果小集群,无所谓也就那几个 ip ,大集群呢?你们运维或者运维领导超级强势还好说,不然等着天天背锅吧。开发不会吊你的规范,也不会考虑你的工作,你想想总有“大神”想把 pod 当服务器用,他不管是不是前台进程的,就要实现远程开发。所以最好就是日常不要给自己留坑,如果运维领导不强势,那就另说。
    shimada666
        17
    shimada666  
       2023-12-08 09:51:39 +08:00
    我直接 Kubesphere 建集群,nodeport 暴露出来一个统一网关端口,外面套个 nginx 全转发到这个端口,内部就是 ingress nginx 的事了
    jerrycmht
        18
    jerrycmht  
       2023-12-08 09:57:18 +08:00
    其实还要看你是什么应用,如果是那种分布式服务上 k8s 的,比如 tidb ,那用 ingress 啥的肯定不合适,流量转发扛不住的。如果是 http 或者小型的应用,那省事儿完全没问题。
    当应用规模大了,就可以考虑 MetalLB 、OpenELB 这些,并且最好是 bgp 的,在路由层就做转发了,或者使用类似 terway 的插件,一个 pod 一个 ip 。
    jerrycmht
        19
    jerrycmht  
       2023-12-08 10:32:54 +08:00
    @3andwich 我觉得可以,但是要考虑 nodeport 选什么 ip 的问题,集群中任意 ip 都可以访问,但任意节点都有可能挂掉,所以最好有 vip ,或者干脆上 metallb 之类的,提前分配 vip
    RatioPattern
        20
    RatioPattern  
       2023-12-08 17:02:24 +08:00
    既然你都强调“K8S 集群”了,那是 metallb 直接按 IP 段分配,这样方便管理.
    比如 10.0.0.2-10.0.0.254 开发环境
    10.0.1.2-10.0.1.254 测试环境
    10.0.3.2-10.0.3.254 随用随扔环境
    10.0.5.2-10.0.5.254 暴露外网环境

    metallb 还可以配合 l2 l3 的交换机、路由用,如果虚拟的路由/交换机不够用你甚至可以直接用 vlan vxlan trunk 带到外面的物理交换机上减负,当然如果集群长期 20 个 pod 以内自己玩这么来有点重.但是如果打算长期用,这么规划好后面就不用怎么操心基本上开好 pod 看看 pod ip 地址就可以了
    RatioPattern
        21
    RatioPattern  
       2023-12-08 17:03:50 +08:00
    一开始 all in one 一台宿主机的话可以用 openwrt 虚拟机这种来做交换机/路由用,配置网络出入策略的话直接根据网段来方便很多
    RatioPattern
        22
    RatioPattern  
       2023-12-08 17:06:03 +08:00
    还有个别 pod 需要翻墙的话直接在这个段网关上配置,会方便很多
    julyclyde
        23
    julyclyde  
       2023-12-09 11:52:48 +08:00
    @jerrycmht 新版 loadbalancer 应该是直接通到 endpoints 了吧?不经过 nodeport 那一段了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.