Выставление сервиса LoadBalancer в minikube на произвольном порту?

У меня есть кластер minikube с запущенным WordPress в одном развертывании и MySQL в другом. Оба развертывания имеют соответствующие службы. Определение службы WordPress выглядит так:

apiVersion: v1
kind: Service
metadata:
    name: wordpress
spec: 
    selector:
        app: wordpress
    ports:
        - port: 80 
    type: LoadBalancer

Служба работает нормально, и minikube service дает мне хороший путь с адресом minikube ip и случайным высоким портом. Проблема в том, что WordPress нужен полный URL-адрес в названии сайта. Я бы предпочел не менять его каждый раз и иметь локальное DNS-имя для кластера.

Есть ли способ выставить LoadBalancer на произвольный порт в миникубе? Меня все устраивает с любым портом, лишь бы это порт решал я, а не сам миникубе?


person mhaligowski    schedule 04.03.2020    source источник


Ответы (1)


Имейте в виду, что Minikube не может предоставить настоящий балансировщик нагрузки, как различные облачные провайдеры, и просто имитирует его с помощью простого _ 1_ Service.

Вы можете полностью контролировать используемый порт. Прежде всего, вы можете указать его вручную в спецификации nodePort Service (помните, что он должен быть в диапазоне по умолчанию: 30000-32767):

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

Ваш пример может выглядеть следующим образом:

apiVersion: v1
kind: Service
metadata:
    name: wordpress
spec: 
    selector:
        app: wordpress
    ports:
        - port: 80
          targetPort: 80
          nodePort: 30000
    type: NodePort

Вы также можете изменить этот диапазон по умолчанию, указав собственное значение после флага --service-node-port-range при запуске kube-apiserver.

Когда вы используете кластер кубернетов, созданный с помощью инструмента kukbeadm (Minikube также использует его как загрузчик по умолчанию), вам необходимо отредактировать /etc/kubernetes/manifests/kube-apiserver.yaml файл и предоставить требуемый флаг с вашим настраиваемым диапазоном портов.

person mario    schedule 04.03.2020
comment
Идеально! Я пропустил, что LoadBalancer на самом деле показывает nodePort! - person mhaligowski; 04.03.2020