Google-Compute-Engine

創建 GCE 負載均衡器時出錯:請求的地址 ip 既不是靜態的也不是分配給 LB

  • August 26, 2020

我有一種情況,Kubernetes 顯然無法再將外部 IP 地址分配給kubectl create -f Deployment.yaml. kubectl describe service <my-service>報告以下錯誤

CreatingLoadBalancerFailed    
Error creating load balancer (will retry): Failed to create load balancer 
for service default/<my-service>: requested ip <my-address> is 
neither static nor assigned to LB <id>(default/<my-service>): <nil>

gcloud compute addresses list表示my-address是靜態IP地址:

NAME          REGION        ADDRESS       STATUS
<my-address>  europe-west1  <ip-address>  RESERVED

並包含分配給負載均衡器Deployment.yaml的規範:<my-service>``<my-address>

kind: Service
apiVersion: v1
metadata:
 name: my-service
spec:
 selector:
   app: my-app
ports:
 - protocol: UDP
   port: <my-port>
type: LoadBalancer
loadBalancerIP: <my-address>

特別奇怪的是:(幾乎)相同的部署之前已經工作過。我已經嘗試重新創建我的集群,但這也沒有幫助。還有什麼可能是錯誤的,我該如何克服錯誤以使我的服務再次可以從外部訪問?

更新我已經保留了一個新的靜態(這次也是全域)IP 地址,gcloud compute addresses create test-address --global並相應地將分配更改為 LB loadBalancerIP: test-address:。但同樣的錯誤仍然存在。

更新如果我沒有在 中指定loadBalancerIPDeployment.yaml部署成功且沒有錯誤,一個新的外部 IP 地址被分配給my-service。可以在此地址從外部 ping 服務。

更新如果我用 刪除我以前的地址,用gcloud compute addresses delete my-address --region europe-west1提升新的外部地址gcloud compute addresses create --addresses <ip-address> --region europe-west1,然後用loadBalancerIP: my-address恢復的原始行重新部署Deployment.yaml,同樣的錯誤再次出現。

問題出在我通過其符號名稱而不是數字 IP 地址(以及分別顯示的)Deployment.yaml來指代地址的地方。如果我改用數字 IP 地址,負載均衡器就會啟動,我的服務可以在該地址從外部訪問(通過負載均衡器)。(這個先前的答案使我走上了正確的軌道。我可能錯誤地認為使用符號名稱以前是有效的。)loadBalancerIp``NAME``ADDRESS``gcloud compute addresses list

背景由於我切換到自己的 VM 實例(而不是 Google Cloud shell)來開發容器映像,因此我收到"Insufficient Permission"了來自gcloud compute addressess list該 VM 實例的錯誤。我知道我可以通過使用 scope 重新創建 VM 實例 https://www.googleapis.com/auth/compute.readonly來改進這一點。無論如何,這個限制顯然與手頭的問題無關。

我有一個類似的問題。事實證明,如果 IP 地址被保留為全域,那麼它將不起作用。我刪除了我的預留並將其更改為與我的 kubernetes 集群相同的區域。 --global 我不得不使用--region europe-west2- 與我的 k8s 集群相同的區域。

之前:失敗 gcloud compute addresses create my-secure-sftp --global

之後:成功 gcloud compute addresses create my-secure-sftp --region europe-west2

@see https://github.com/kubernetes/kubernetes/issues/22721了解更多詳情

引用自:https://serverfault.com/questions/796881