web-dev-qa-db-ja.com

GCEロードバランサの作成中にエラーが発生しました:リクエストされたアドレスipは静的でもLBにも割り当てられていません

_kubectl create -f Deployment.yaml_で、Kubernetesがサービスに外部IPアドレスを割り当てられなくなったようです。 _kubectl describe service <my-service>_は次の error を報告します:

_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>
_

特に奇妙なのは、(ほぼ)同じ配置が以前に機能したことです。私はすでに recreate クラスターを試しましたが、これも役に立ちませんでした。他に何が間違っている可能性がありますか?また、エラーを克服して、サービスを外部から再び到達可能にするにはどうすればよいですか?

[〜#〜] update [〜#〜]_gcloud compute addresses create test-address --global_で新しい静的(今回はグローバル)IPアドレスを予約しましたそれに応じてLBへの割り当てを変更しました:_loadBalancerIP: test-address_。しかし、同じエラーがまだ残っています。

[〜#〜] update [〜#〜]_Deployment.yaml_でloadBalancerIPを指定しない場合、展開は成功しますエラーなしで、新しい外部IPアドレスが_my-service_に割り当てられます。サービスは、このアドレスで外部からpingできます。

[〜#〜] update [〜#〜]_gcloud compute addresses delete my-address --region europe-west1_で以前のアドレスを削除した場合、_gcloud compute addresses create --addresses <ip-address> --region europe-west1_、次に_loadBalancerIP: my-address_に復元された元の行_Deployment.yaml_で再デプロイすると、同じエラーが再び表示されます。

8
Drux

問題はDeployment.yamlにあり、loadBalancerIpの下のアドレスを、数値のIPアドレスではなくその記号名で参照していました(NAMEおよびADDRESSgcloud compute addresses listそれぞれ)。代わりに数値のIPアドレスを使用すると、ロードバランサーが起動し、サービスにこのアドレスで(ロードバランサー経由で)外部からアクセスできます。 ( これ 以前の回答で正しい方向に進みました。記号名を使用することで以前は機能していたという誤った印象があったかもしれません。)

背景私は switching から独自のVMインスタンスに(Google Cloud Shellの代わりに) )コンテナイメージを開発するために、そのVMインスタンスで"Insufficient Permission"からgcloud compute addressess listエラーを受け取ります。これを 再作成して= VMスコープを持つインスタンスhttps://www.googleapis.com/auth/compute.readonly。いずれにしても、この制限は当面の問題とは何の関係もないようです。

4
Drux

同様の問題がありました。 IPアドレスがグローバルとして予約されている場合は機能しません。予約を削除して、kubernetesクラスターと同じリージョンに変更しました。 --globalを使用する必要がありました--region europe-west2-私のk8sクラスターと同じリージョン。

before:failgcloud 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 詳細について

11
Jujhar Singh

regionalアドレスを作成する必要があります:

gcloud compute addresses create my-secure-sftp --region europe-west2

これは、イングレスコントローラー(ステータスIN​​_USE)にグローバルIPを割り当てます。これがまさに必要なものです。

あなたの場合、グローバル静的と内部静的は機能しません。