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

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

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

这中文的 3 条和图里的配字有点对得上又好像自己写的, 是靠谱资料吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX