four43 Asked: 2015-10-13 10:38:03 +0800 CST2015-10-13 10:38:03 +0800 CST 2015-10-13 10:38:03 +0800 CST 将 LoadBalancer 添加到现有服务 772 按照这个留言簿教程。 接近尾声时,他们有点掩饰如何创建LoadBalancer或分配NodePorts给服务。他们引用了描述不同类型及其功能的文档,但并未真正详细说明如何将它们应用于服务。有没有办法更新正在运行的服务,创建负载均衡器并将其附加到指定的端口? 使用 Amazon Web Services 来托管我们的集群,它支持负载均衡器,非常适合创建服务,但我不确定如何修改服务。 编辑: 尝试这样做会导致错误: $ kubectl expose service frontend --port=80 --type=LoadBalancer 来自服务器的错误:服务“前端”已经存在 load-balancing 3 个回答 Voted Best Answer Alex Robinson 2015-10-13T12:00:51+08:002015-10-13T12:00:51+08:00 这很令人困惑,但显然kubectl expose只能创建一项新服务,而不能更新现有服务。它说在现有服务上运行时,您应该传递一个--name标志来指定新服务的所需名称,以避免您看到的冲突。 要就地更新服务,您应该能够使用kubectl patch或kubectl update。这可能不是最佳方法,但我个人倾向于通过运行kubectl get svc svc-name -o yaml > svc.yaml、根据需要更新 svc.yaml (type: LoadBalancer在这种情况下具有)然后kubectl update -f svc.yaml. Giovanni Vacanti 2016-12-07T03:37:56+08:002016-12-07T03:37:56+08:00 我不确定这是否适合您的情况,但更激进和更简单的方法是删除服务(但不是部署): kubectl delete service 'service-name' 并将部署重新公开为 LoadBalancer: kubectl expose deployment/'deployment-name' --type="LoadBalancer" Ivan 2019-02-07T11:58:57+08:002019-02-07T11:58:57+08:00 你可以这样做: 在编辑器中交互kubectl edit <SERVICE_NAME>并修改类型为“LoadBalancer” 在一个命令中kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'
这很令人困惑,但显然
kubectl expose
只能创建一项新服务,而不能更新现有服务。它说在现有服务上运行时,您应该传递一个--name
标志来指定新服务的所需名称,以避免您看到的冲突。要就地更新服务,您应该能够使用
kubectl patch
或kubectl update
。这可能不是最佳方法,但我个人倾向于通过运行kubectl get svc svc-name -o yaml > svc.yaml
、根据需要更新 svc.yaml (type: LoadBalancer
在这种情况下具有)然后kubectl update -f svc.yaml
.我不确定这是否适合您的情况,但更激进和更简单的方法是删除服务(但不是部署):
并将部署重新公开为 LoadBalancer:
你可以这样做:
kubectl edit <SERVICE_NAME>
并修改类型为“LoadBalancer”kubectl patch <SERVICE_NAME> -p '{"spec":{"type":"LoadBalancer"}}'