Seguindo este tutorial do livro de visitas .
Perto do final, eles meio que encobrem como criar um LoadBalancer
ou atribuir NodePorts
ao serviço. Eles fazem referência a este documento que descreve os diferentes tipos e o que eles fazem, mas não entram 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 o Amazon Web Services para hospedar nosso cluster, ele oferece um ó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 frontend de serviço --port=80 --type=LoadBalancer
Erro do servidor: o serviço "frontend" já existe
É bastante confuso, mas aparentemente
kubectl expose
só pode criar um novo serviço, não atualizar um existente. Diz que ao executar em um serviço existente, você deve passar um--name
sinalizador para especificar o nome desejado do novo serviço para evitar o conflito que estava vendo.Para atualizar um serviço no local, você deve ser capaz de usar
kubectl patch
oukubectl update
. Provavelmente não é a abordagem ideal, mas eu pessoalmente costumo fazer esse tipo de coisa executandokubectl get svc svc-name -o yaml > svc.yaml
, atualizando svc.yaml conforme desejado (para tertype: LoadBalancer
neste caso) e, em seguida,kubectl update -f svc.yaml
.Não tenho certeza se isso é adequado para o seu caso, mas uma abordagem mais radical e simples seria excluir o serviço (mas não a implantação):
e exponha novamente a implantação como LoadBalancer:
Você pode fazê-lo:
kubectl edit <SERVICE_NAME>
e modifique o tipo para "LoadBalancer" no editorkubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'