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

关于 K8S NodePort 会导致 service 过载和端口耗尽,这个该怎么理解呢

  •  
  •   nspih · 2023-07-23 21:12:14 +08:00 · 2025 次点击
    这是一个创建于 470 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2023-07-27 01:11:47 +08:00
    ysicing
        1
    ysicing  
       2023-07-23 21:17:55 +08:00
    30000-32767 只是默认值,这个范围可以改的。理论上你得多大规模的集群可以用完这些端口
    nspih
        2
    nspih  
    OP
       2023-07-23 21:24:18 +08:00
    @ysicing 主要是他说 NodePort 没有在集群中提供均衡负载,按理来说我在外面通过比如 Nginx 负载不是就可以将请求分配均匀到不同的 service 吗?
    zed1018
        3
    zed1018  
       2023-07-23 21:36:06 +08:00
    这里说的负载是 k8s service 对多个 replica pod 的负载
    seers
        4
    seers  
       2023-07-23 21:36:35 +08:00 via Android
    很好理解啊,字面意思,没有 slb ,不同的 node 承载的流量就基本一致,但是不同规格 node 承载力不一样,把 pod 打挂了就会起新的然后继续占掉 port
    nspih
        5
    nspih  
    OP
       2023-07-23 21:39:59 +08:00
    @zed1018 但是 kube-proxy 中使用的 iptables 或者 ipvs 都是对 replica pod 有负载能力的啊
    nspih
        6
    nspih  
    OP
       2023-07-23 21:45:05 +08:00
    @seers 但是 pod 重启只会占用原来端口吧,而且图片上的好像是说对于不同的 service,进入的流量是随机分发,这个不是很能理解
    seers
        7
    seers  
       2023-07-23 21:49:21 +08:00 via Android
    @nspih 一般来说不会指定一个 port ,会给一个 range ,让 k8s 调度,因为那么多 pod 你不可能都自己指定的
    seers
        8
    seers  
       2023-07-23 21:51:47 +08:00 via Android
    而且如果你还开了 scale ,流量一上来起新 pod 也会占掉很多 port
    nspih
        9
    nspih  
    OP
       2023-07-23 21:57:54 +08:00
    @seers 感谢回复,但是这个跟是否 NodePort 的 service 好像没有关系,而且 Pod 端口一般也很充足。所以比较疑惑的他说的 service 过载是啥情况,感觉他说的类似与外部负载均衡访问不同的 NodePort 服务,但是进入 k8s 内部是随机分发到 NodePort 端口这种情况,但是也没搜到这方面的知识。
    wbuntu
        10
    wbuntu  
       2023-07-23 23:31:57 +08:00
    没有这个说法,service 本身就可以当作一个 LB ,红框里应该是照着图片直接翻译了,图片里说的 service overload 应该指的是应用层服务过载而不是 k8s 层面的
    buffzty
        11
    buffzty  
       2023-07-24 11:18:18 +08:00
    你不用理解了,不会遇到这种问题,现实中除了 ingress 其他地方基本不会开 nodeport
    nspih
        12
    nspih  
    OP
       2023-07-24 20:50:59 +08:00
    @wbuntu 感谢回复,你这个说法挺有道理的
    julyclyde
        13
    julyclyde  
       2023-07-25 08:39:40 +08:00
    在所有 node 上找到相同号码的空闲端口
    这么高的协调成本,失败率当然会很高
    lazyfighter
        14
    lazyfighter  
       2023-07-26 09:07:42 +08:00
    没人这么用吧 , 维护成本太大了
    momocraft
        15
    momocraft  
       2023-07-27 01:11:47 +08:00
    NodePort 本身不是为了负载均衡而设的, 大概是期待用户自己在外面做负载均衡, 比如图里的 DNS round robin

    kube-proxy 的负载均衡能力相对新, 而且也不是多智能的做法, 比 DNS round robin 强得有限

    这中文的 3 条和图里的配字有点对得上又好像自己写的, 是靠谱资料吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   950 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.