在K8S中,nodePort默认端口范围是多少? 为什么是这个端口范围?
在 Kubernetes (K8s) 中,NodePort 服务类型的默认端口范围通常是 30000-32767。这个范围是 Kubernetes 项目早期设定的标准,并且被广泛接受为默认配置。选择这个端口范围的原因有以下几点:
避免冲突:
低于 30000 的端口往往被系统保留给一些知名的网络服务和应用程序使用。设置较高的起始端口是为了减少与其他已知服务端口发生冲突的可能性。
足够大的端口空间:
这个范围提供了 2768 个可用端口,对于大部分集群而言,这是一个相对较大的端口池,足以满足多个服务同时对外暴露的需求。
内核限制:
在 Linux 系统中,IANA 定义的动态/私有端口范围是从 49152 到 65535。Kubernetes 选择了一个较小的子集作为 NodePort 范围,可能是因为考虑到有些环境中可能存在额外的防火墙规则或其他网络策略限制,使得较高端口不易于管理或开放。
综上所述,Kubernetes 允许用户自定义 NodePort 的范围。管理员可以根据实际情况在集群启动时通过配置 Kubernetes API Server 来修改这个范围。比如,可以通过编辑 kube-apiserver 的启动参数 --service-node-port-range 来设置不同的端口范围,但务必确保所选范围没有被系统或者其他服务占用,并且符合网络安全策略的要求。例如,可以将范围设置为 --service-node-port-range=30000-65535(假设环境中允许使用更大的端口范围)。
### 概述
在Kubernetes(K8S)中,NodePort是一种Service类型,可以将外部流量路由到节点(Node)上的Pod。默认情况下,NodePort服务使用30000-32767之间的端口范围。如果需要修改默认端口范围或查看当前使用的端口范围,可以通过修改kube-apiserver的参数来实现。
### 实现步骤
下面是实现“K8S NodePort默认端口范围”的整体流程及每一步需要做什么的简要概括。我们将通过修改kube-apiserver参数来指定NodePort的端口范围。
| 步骤 | 操作 |
| ---- | ---- |
| 步骤一 | 编辑kube-apiserver配置文件 |
| 步骤二 | 添加--service-node-port-range参数 |
| 步骤三 | 重启kube-apiserver服务 |
### 代码示例
#### 步骤一:编辑kube-apiserver配置文件
首先,我们需要编辑kube-apiserver的配置文件,通常路径为/etc/kubernetes/manifests/kube-apiserver.yaml。找到args参数,准备添加--service-node-port-range参数。
```yaml
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --service-node-port-range=30000-32767
args:
- --advertise-address=192.168.1.100
...
```
#### 步骤二:添加--service-node-port-range参数
在kube-apiserver的配置文件中,找到args参数下方,添加--service-node-port-range参数指定新的NodePort端口范围。
```yaml
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --service-node-port-range=30000-32767
args:
- --advertise-address=192.168.1.100
- --service-node-port-range=10000-20000
...
```
#### 步骤三:重启kube-apiserver服务
完成参数修改后,需要重启kube-apiserver服务以使更改生效。可以使用以下命令重启kube-apiserver服务:
```bash
sudo systemctl restart kube-apiserver
```
### 总结
通过以上步骤,我们成功修改了K8S NodePort默认端口范围。请注意,在修改kube-apiserver参数时,一定要谨慎操作,以避免对整个集群造成不可逆的影响。希
-----------------------------------
转自
https://blog.51cto.com/u_16236282/10382416