Adicione LoadBalancer ao serviço existente

Adicione LoadBalancer ao serviço existente

Seguindo este tutorial do livro de visitas.

Perto do final, eles encobrem como criar LoadBalancerou atribuir NodePortsao serviço. Eles fazem referênciaeste documentoque descreve os diferentes tipos e o que eles fazem, mas não entra em detalhes sobre como aplicá-los a um serviço. Existe uma maneira de atualizar o serviço em execução, criando e anexando um balanceador de carga às portas especificadas?

Usando Amazon Web Services para hospedar nosso cluster, ele suporta ótimo balanceador de carga na criação de um serviço, mas não tenho certeza de como modificar o serviço.

EDITAR:

Tentar isso resultou em um erro:

$ kubectl expor serviço frontend --port=80 --type=LoadBalancer
Erro do servidor: o serviço "frontend" já existe

Responder1

É muito confuso, mas aparentemente kubectl exposesó pode criar um novo serviço, não atualizar um existente. Diz que ao executar um serviço existente, você deve passar um --namesinalizador para especificar o nome desejado do novo serviço para evitar o conflito que estava vendo.

Para atualizar um serviço em vigor, você poderá usar kubectl patchou kubectl update. Provavelmente não é a abordagem ideal, mas eu pessoalmente costumo fazer esse tipo de coisa executando kubectl get svc svc-name -o yaml > svc.yaml, atualizando svc.yaml conforme desejado ( type: LoadBalancerneste caso), então kubectl update -f svc.yaml.

Responder2

Não tenho certeza se isso é adequado ao seu caso, mas uma abordagem mais radical e simples seria excluir o serviço (mas não a implantação):

kubectl delete service 'service-name'

e exponha novamente a implantação como LoadBalancer:

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

Responder3

Você pode fazer isso:

  • interativamente kubectl edit <SERVICE_NAME>e modifique o tipo para "LoadBalancer" no editor
  • em um comando porkubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'

informação relacionada