3

是否可以在 kubernetes 集群上拥有 NodePort Default_range + user_defined_range 或者它只能是一个范围

我们可以配置说默认范围加上一系列用户定义的值吗?像默认范围是 30000-32767 我们可以从 40000-41000 以及其他范围?

希望为集群中的其他应用程序保留默认范围,但构建一个特定于我的应用程序的范围。

我已经测试了在范围之外分配端口,它显然失败了,所以范围是硬定义的,想了解是否有任何方法可以拥有两个范围或用户需要使用默认范围或自定义范围(即单个集群中的两个不同范围是不支持 )

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
4

2 回答 2

6

不幸的是,这是不可能的。

默认范围确实是 30000-32767 但可以通过设置 --service-node-port-range 更新文件/etc/kubernetes/manifests/kube-apiserver.yaml并添加行来更改--service-node-port-range=xxxxx-yyyyy

但是要小心,不要产生任何配置问题,因为选择了范围以避免与主机网络上的任何其他内容发生冲突。

我认为对您来说最好的解决方案是设置一个单一但更广泛的范围。

我希望它有所帮助。

于 2020-01-10T08:52:09.293 回答
2

将上述答案作为输入并进行以下测试,我能够得出结论,这不是一个受支持的功能,并且每个集群必须使用一个 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
于 2020-01-10T10:33:19.863 回答