將 LoadBalancer 加入現有服務

將 LoadBalancer 加入現有服務

請按照此留言簿教學進行操作

接近尾聲時,他們掩蓋瞭如何創建LoadBalancer或分配NodePorts服務。他們參考這個文檔它描述了不同的類型以及它們的作用,但並沒有真正詳細說明如何將它們應用到服務中。有沒有辦法更新正在運行的服務,建立負載平衡器並將其附加到指定連接埠?

使用 Amazon Web Services 託管我們的叢集,它支援負載平衡器,非常適合建立服務,但我不確定如何修改該服務。

編輯:

嘗試這樣做會導致錯誤:

$ kubectl 公開服務前端 --port=80 --type=LoadBalancer
來自伺服器的錯誤:服務「前端」已存在

答案1

這非常令人困惑,但顯然kubectl expose只能創建一項新服務,而不能更新現有服務。它表示,當在現有服務上運行時,您應該傳遞一個--name標誌來指定新服務所需的名稱,以避免您看到的衝突。

要就地更新服務,您應該能夠使用kubectl patchkubectl 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"}}'

相關內容