4

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

请帮我理解。提前致谢。

4

1 回答 1

5

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

@thockin在这里很好地说明了原因:

  1. 我们不希望服务节点端口超越节点使用的真实端口
  2. 我们不希望服务节点端口超越 pod 主机端口。
  3. 我们不想随机分配端口 80 或 443 或 22。

查看代码,我发现范围不受它的限制。您可以在此处此处和此处的 godocs中找到代码片段。

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

➜  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
于 2020-09-02T11:11:57.593 回答