創建 GCE 負載均衡器時出錯:請求的地址 ip 既不是靜態的也不是分配給 LB
我有一種情況,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
並相應地將分配更改為 LBloadBalancerIP: test-address
:。但同樣的錯誤仍然存在。更新如果我沒有在 中指定
loadBalancerIP
,Deployment.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了解更多詳情