Seguindo este tutorial do livro de visitas.
Perto do final, eles encobrem como criar LoadBalancer
ou atribuir NodePorts
ao 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 expose
só pode criar um novo serviço, não atualizar um existente. Diz que ao executar 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 em vigor, você poderá usar kubectl patch
ou 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: LoadBalancer
neste 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 por
kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'