接近尾聲時,他們掩蓋瞭如何創建LoadBalancer
或分配NodePorts
服務。他們參考這個文檔它描述了不同的類型以及它們的作用,但並沒有真正詳細說明如何將它們應用到服務中。有沒有辦法更新正在運行的服務,建立負載平衡器並將其附加到指定連接埠?
使用 Amazon Web Services 託管我們的叢集,它支援負載平衡器,非常適合建立服務,但我不確定如何修改該服務。
編輯:
嘗試這樣做會導致錯誤:
$ kubectl 公開服務前端 --port=80 --type=LoadBalancer
來自伺服器的錯誤:服務「前端」已存在
答案1
這非常令人困惑,但顯然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
。
答案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"}}'