Siguiendo este tutorial del libro de visitas.
Cerca del final, pasan por alto cómo crear LoadBalancer
o asignar NodePorts
un servicio. hacen referenciaeste doctorque describe los diferentes tipos y lo que hacen, pero no entra en detalles sobre cómo aplicarlos a un servicio. ¿Existe alguna forma de actualizar el servicio en ejecución, creando y adjuntando un equilibrador de carga a los puertos especificados?
Al utilizar Amazon Web Services para alojar nuestro clúster, admite un excelente equilibrador de carga para la creación de un servicio, pero no estoy seguro de cómo modificar el servicio.
EDITAR:
Al intentar esto se produjo un error:
$ kubectl expone la interfaz del servicio --port=80 --type=LoadBalancer
Error del servidor: el servicio "interfaz" ya existe
Respuesta1
Es bastante confuso, pero aparentemente kubectl expose
sólo puede crear un nuevo servicio, no actualizar uno existente. Dice que cuando se ejecuta en un servicio existente, debe pasar una --name
marca para especificar el nombre deseado del nuevo servicio para evitar el conflicto que estaba viendo.
Para actualizar un servicio existente, debería poder utilizar kubectl patch
o kubectl update
. Probablemente no sea el enfoque óptimo, pero personalmente tiendo a hacer este tipo de cosas ejecutando , actualizando svc.yaml según lo desee ( en este caso, kubectl get svc svc-name -o yaml > svc.yaml
tenerlo ) y luego .type: LoadBalancer
kubectl update -f svc.yaml
Respuesta2
No estoy seguro de si esto es adecuado para su caso, pero un enfoque más radical y simple sería eliminar el servicio (pero no la implementación):
kubectl delete service 'service-name'
y volver a exponer la implementación como LoadBalancer:
kubectl expose deployment/'deployment-name' --type="LoadBalancer"
Respuesta3
Puedes hacerlo ya sea:
- interactivamente
kubectl edit <SERVICE_NAME>
modificando el tipo a "LoadBalancer" en el editor - en un comando por
kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'