答案1
这很令人困惑,但显然kubectl expose
只能创建新服务,而不能更新现有服务。它表示,在现有服务上运行时,您应该传递一个--name
标志来指定新服务的所需名称,以避免您看到的冲突。
要更新现有服务,您应该能够使用 或kubectl patch
。这可能不是最佳方法,但我个人倾向于通过运行 ,根据需要更新 svc.yaml (在本例中为),然后 来kubectl update
执行此类操作。kubectl get svc svc-name -o yaml > svc.yaml
type: LoadBalancer
kubectl 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"}}'