Kubernetes NodePort (Default_range + user_defined_range) в кластере Или это может быть только один диапазон - PullRequest
0 голосов
/ 09 января 2020

Возможно ли иметь NodePort Default_range + user_defined_range в кластере kubernetes Или это может быть только один диапазон

Можем ли мы настроить, чтобы сказать диапазон по умолчанию плюс диапазон, определенный пользователем ценности ? Например, диапазон по умолчанию - 30000-32767. Можем ли мы иметь дополнительный диапазон от 40000-41000?

Хотелось бы сохранить диапазон по умолчанию для других приложений в кластере, но построить один диапазон, задав c к моему приложению.

Я проверил назначение порта за пределами диапазона, он явно не работает, поэтому диапазон жестко определен, он хотел бы понять, есть ли способ иметь два диапазона, или пользователь должен жить с диапазоном по умолчанию или пользовательским диапазон (т.е. два разных диапазона в одном кластере не поддерживаются)

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

Ответы [ 2 ]

1 голос
/ 10 января 2020

К сожалению, это невозможно.

Диапазон по умолчанию действительно 30000-32767, но его можно изменить, установив --service-node-port-range Обновите файл /etc/kubernetes/manifests/kube-apiserver.yaml и добавьте строку --service-node-port-range=xxxxx-yyyyy

Будьте осторожны и не создавайте проблем с конфигурацией, так как диапазон был выбран, чтобы избежать конфликтов с чем-либо еще в сети хост-машины.

Я думаю, что лучшим решением для вас было бы установить один, но более широкий диапазон.

Надеюсь, это поможет.

0 голосов
/ 10 января 2020

С ответом выше в качестве входных данных и тестированием ниже я смог сделать вывод, что это не поддерживаемая функция и мне придется жить с одним диапазоном 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
...