Добавить LoadBalancer к существующей службе

Добавить LoadBalancer к существующей службе

Следуя этому руководству по гостевой книге.

Ближе к концу они как бы умалчивают о том, как создать LoadBalancerили назначить NodePortsна службу. Они ссылаютсяэтот документкоторый описывает различные типы и что они делают, но не вдается в подробности того, как их применять к службе. Есть ли способ обновить запущенную службу, создав и прикрепив балансировщик нагрузки к указанным портам?

Для размещения нашего кластера мы используем Amazon Web Services. Он отлично поддерживает балансировку нагрузки при создании сервиса, но я не уверен, как его изменить.

РЕДАКТИРОВАТЬ:

Попытка этого привела к ошибке:

$ kubectl expose service frontend --port=80 --type=LoadBalancer
Ошибка сервера: служба "frontend" уже существует

решение1

Это довольно запутанно, но, по-видимому, kubectl exposeможет только создать новую службу, но не обновить существующую. В нем говорится, что при запуске на существующей службе вы должны передать флаг, --nameчтобы указать желаемое имя новой службы, чтобы избежать конфликта, который вы видели.

Чтобы обновить службу на месте, вы должны иметь возможность использовать либо , kubectl patchлибо kubectl update. Это, вероятно, не оптимальный подход, но я лично склонен делать такие вещи, запуская kubectl get svc svc-name -o yaml > svc.yaml, обновляя svc.yaml по желанию (чтобы иметь type: LoadBalancerв данном случае), затем kubectl update -f svc.yaml.

решение2

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

kubectl delete service 'service-name'

и повторно выставьте развертывание как LoadBalancer:

kubectl expose deployment/'deployment-name' --type="LoadBalancer"

решение3

Вы можете сделать это либо:

  • интерактивно kubectl edit <SERVICE_NAME>и измените тип на «LoadBalancer» в редакторе
  • в одной командеkubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'

Связанный контент