在 Kubernetes 中,为什么 NodePort 的默认端口范围是 30000 - 32767?

In Kubernetes why NodePort has default port range from 30000 - 32767?

我是 Kubernetes 的新手。在 Kubernetes 中,为什么只有 NodePort 的默认端口范围是 30000 - 32767?即使我们将默认值更改为用户定义的端口范围,为什么只允许 2767 个端口?

请帮我理解。 提前致谢。

选择此范围是为了避免与主机网络上的任何其他内容发生冲突,因为在许多情况下它是动态分配的(手动选项也是可能的)。例如,如果您将其设置在 1-32767 范围内,您分配的 nodePort 可能与端口 22 冲突。

@thockin here 很好地解释了原因:

  1. We don't want service node ports to tromp on real ports used by the node
  2. We don't want service node ports to tromp on pod host ports.
  3. We don't want to randomly allocate someone port 80 or 443 or 22.

查看代码发现范围不受其限制。您可以找到代码片段 here, here and in the godocs here.

当我设置更高的默认范围时,我也进行了快速测试,它对我来说效果很好:

➜  temp kubectl get svc
NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
my-service    NodePort    10.100.214.233   <none>        80:14051/TCP   68s
my-service2   NodePort    10.97.67.57      <none>        80:10345/TCP   6s