Открытие модуля Kubernetes на кластере без оборудования

Я пытаюсь открыть модуль Kubernetes в кластере с одним узлом без домена. Насколько я понимаю, у меня есть следующие варианты:

  1. Разоблачить с помощью NodePort
  2. Разоблачить с помощью Ingress-контроллера
  3. Выставляем с помощью ClusterIP и вручную выставляем внешний IP

Как я уже упоминал, у меня есть только кластер с одним узлом. Это означает, что мастер одновременно является мастером и узлом, которые работают непосредственно в хост-системе Fedora.

Самое простое решение - использовать NodePort. Но здесь есть ограничение (если я прав), порт службы будет автоматически выбран из заданного диапазона портов.

Следующее лучшее решение - использовать входной контроллер. Но для этого мне нужно общественное достояние, которого у меня нет. Так что входной контроллер мне тоже не подходит.

Какие у меня есть другие варианты? Я просто хочу открыть свою службу прямо на порту 9090.


person Marcel Lambacher    schedule 23.08.2018    source источник


Ответы (2)


Вы можете установить собственный диапазон портов для NodePort, добавив этот параметр в свой настройки apiserver (/etc/kubernetes/manifests/kube-apiserver.yaml):

--service-node-port-range portRange
По умолчанию: 30000-32767
Диапазон портов, который необходимо зарезервировать для служб с видимостью NodePort. Пример: "30000-32767".
Включая на обоих концах диапазона.

Это часть документации Kubernetes, относящаяся к Сервисам:

Если вам нужен конкретный номер порта, вы можете указать значение в поле nodePort, и система выделит вам этот порт, иначе транзакция API не удастся (т.е. вам нужно самостоятельно позаботиться о возможных конфликтах портов). Указанное вами значение должно находиться в настроенном диапазоне для портов узла.

Пример этого ответа был взят из статьи Размещение собственной нагрузки Kubernetes NodePort Балансировщик:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
    - port: 443
      nodePort: 30443
      name: https
  selector:
    name: nginx
person VASャ    schedule 24.08.2018

Почему бы не вариант 3: вы можете настроить externalIP для своего IP-адреса узла.

apiVersion: v1
kind: Service
...
spec:
  externalIPs:
  - your node ip

Также с помощью NodePort можно указать порт службы.

person Kun Li    schedule 24.08.2018