集群上的 Kubernetes NodePort (Default_range + user_defined_range) 或者它可以只是一个范围
Kubernetes NodePort (Default_range + user_defined_range) on a cluster Or it can be just one range only
是否可以在 kubernetes 集群上使用 NodePort Default_range + user_defined_range 或者它只能是一个范围
Can we configure to have say default range plus a range of user defined values ? Like default range is 30000-32767 can we have additional range from 40000-41000 as well ?
希望为集群中的其他应用程序保留默认范围,但构建一个特定于我的应用程序的范围。
我已经测试过在范围之外分配端口,但显然失败了,所以范围是很难定义的。我想了解是否有任何方法可以有两个范围,或者用户需要使用默认范围或自定义范围(即两个不同的范围)不支持单个集群中的范围)
ubuntu@cluster-master:~$ kubectl expose deployment nginx --type=NodePort --port=80 --dry-run -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
nodePort: 40000
selector:
run: nginx
type: NodePort
status:
loadBalancer: {}
ubuntu@cluster-master:~$ kubectl create -f service.yaml
The Service "nginx" is invalid: spec.ports[0].nodePort: Invalid value: 40000: provided port is not in the valid range. The range of valid ports is 30000-32767
不幸的是,那样做是不可能的。
默认范围确实是 30000-32767 但可以通过设置
--service-node-port-range
更新文件 /etc/kubernetes/manifests/kube-apiserver.yaml
并添加行 --service-node-port-range=xxxxx-yyyyy
但是要小心,不要在选择范围时产生任何配置问题,以避免与主机网络上的任何其他内容发生冲突。
我认为对您来说最好的解决方案是设置一个单一但更宽的范围。
希望对您有所帮助。
将以上答案作为输入并进行以下测试,我得出结论,这不是受支持的功能,每个集群必须使用一个 NodePort 范围。
我能够通过更新 kube-apiserver 的清单文件来尝试跟随。
在添加具有多个范围值的标志 --service-node-port-range 后,我注意到 kube-apiserv 仅支持一个标志(列表中的最后一个),因此我无法将其设置为两个不同的范围。
尝试按照文件中的两种语法进行操作。
使用以下语法,文件中的最后一个标志将覆盖所有前面标志的值,范围仅变为 40000 到 41000
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
.
.
.
- --service-node-port-range=30000-32000
- --service-node-port-range=38000-39000
- --service-node-port-range=40000-41000
.
.
.
通过在端口范围 40000-41000 上成功创建服务进行测试
$ kubectl get service nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.98.125.217 <none> 80:40000/TCP 75m
尝试的第二个 sysntax 如下(但 kube-apiserv 不支持范围内的这种格式,因此无法启动,所以这不好)
- --service-node-port-range=3000-32000,40000-41000
是否可以在 kubernetes 集群上使用 NodePort Default_range + user_defined_range 或者它只能是一个范围
Can we configure to have say default range plus a range of user defined values ? Like default range is 30000-32767 can we have additional range from 40000-41000 as well ?
希望为集群中的其他应用程序保留默认范围,但构建一个特定于我的应用程序的范围。
我已经测试过在范围之外分配端口,但显然失败了,所以范围是很难定义的。我想了解是否有任何方法可以有两个范围,或者用户需要使用默认范围或自定义范围(即两个不同的范围)不支持单个集群中的范围)
ubuntu@cluster-master:~$ kubectl expose deployment nginx --type=NodePort --port=80 --dry-run -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
nodePort: 40000
selector:
run: nginx
type: NodePort
status:
loadBalancer: {}
ubuntu@cluster-master:~$ kubectl create -f service.yaml
The Service "nginx" is invalid: spec.ports[0].nodePort: Invalid value: 40000: provided port is not in the valid range. The range of valid ports is 30000-32767
不幸的是,那样做是不可能的。
默认范围确实是 30000-32767 但可以通过设置
--service-node-port-range
更新文件 /etc/kubernetes/manifests/kube-apiserver.yaml
并添加行 --service-node-port-range=xxxxx-yyyyy
但是要小心,不要在选择范围时产生任何配置问题,以避免与主机网络上的任何其他内容发生冲突。
我认为对您来说最好的解决方案是设置一个单一但更宽的范围。
希望对您有所帮助。
将以上答案作为输入并进行以下测试,我得出结论,这不是受支持的功能,每个集群必须使用一个 NodePort 范围。
我能够通过更新 kube-apiserver 的清单文件来尝试跟随。
在添加具有多个范围值的标志 --service-node-port-range 后,我注意到 kube-apiserv 仅支持一个标志(列表中的最后一个),因此我无法将其设置为两个不同的范围。
尝试按照文件中的两种语法进行操作。
使用以下语法,文件中的最后一个标志将覆盖所有前面标志的值,范围仅变为 40000 到 41000
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
.
.
.
- --service-node-port-range=30000-32000
- --service-node-port-range=38000-39000
- --service-node-port-range=40000-41000
.
.
.
通过在端口范围 40000-41000 上成功创建服务进行测试
$ kubectl get service nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.98.125.217 <none> 80:40000/TCP 75m
尝试的第二个 sysntax 如下(但 kube-apiserv 不支持范围内的这种格式,因此无法启动,所以这不好)
- --service-node-port-range=3000-32000,40000-41000