将 LoadBalancer 添加到现有服务

将 LoadBalancer 添加到现有服务

按照此留言簿教程

接近尾声时,他们略微提到了如何创建LoadBalancer或分配NodePorts服务。他们引用了本文档描述了不同类型及其作用,但并未详细介绍如何将它们应用于服务。有没有办法更新正在运行的服务,创建负载均衡器并将其附加到指定端口?

使用 Amazon Web Services 来托管我们的集群,它在创建服务时支持负载均衡器,但我不确定如何修改服务。

编辑:

尝试此操作会导致错误:

$ kubectl reveal service frontend --port=80 --type=LoadBalancer
服务器错误:服务“frontend”已存在

答案1

这很令人困惑,但显然kubectl expose只能创建新服务,而不能更新现有服务。它表示,在现有服务上运行时,您应该传递一个--name标志来指定新服务的所需名称,以避免您看到的冲突。

要更新现有服务,您应该能够使用 或kubectl patch。这可能不是最佳方法,但我个人倾向于通过运行 ,根据需要更新 svc.yaml (在本例中为),然后 来kubectl update执行此类操作。kubectl get svc svc-name -o yaml > svc.yamltype: LoadBalancerkubectl 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"}}'

相关内容