在 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 很好地解释了原因:
- We don't want service node ports to tromp on real ports used by the node
- We don't want service node ports to tromp on pod host ports.
- 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
我是 Kubernetes 的新手。在 Kubernetes 中,为什么只有 NodePort 的默认端口范围是 30000 - 32767?即使我们将默认值更改为用户定义的端口范围,为什么只允许 2767 个端口?
请帮我理解。 提前致谢。
选择此范围是为了避免与主机网络上的任何其他内容发生冲突,因为在许多情况下它是动态分配的(手动选项也是可能的)。例如,如果您将其设置在 1-32767 范围内,您分配的 nodePort
可能与端口 22 冲突。
@thockin here 很好地解释了原因:
- We don't want service node ports to tromp on real ports used by the node
- We don't want service node ports to tromp on pod host ports.
- 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