_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
_で再デプロイすると、同じエラーが再び表示されます。
問題はDeployment.yaml
にあり、loadBalancerIp
の下のアドレスを、数値のIPアドレスではなくその記号名で参照していました(NAME
およびADDRESS
gcloud compute addresses list
それぞれ)。代わりに数値のIPアドレスを使用すると、ロードバランサーが起動し、サービスにこのアドレスで(ロードバランサー経由で)外部からアクセスできます。 ( これ 以前の回答で正しい方向に進みました。記号名を使用することで以前は機能していたという誤った印象があったかもしれません。)
背景私は switching から独自のVMインスタンスに(Google Cloud Shellの代わりに) )コンテナイメージを開発するために、そのVMインスタンスで"Insufficient Permission"
からgcloud compute addressess list
エラーを受け取ります。これを 再作成して= VMスコープを持つインスタンスhttps://www.googleapis.com/auth/compute.readonly
。いずれにしても、この制限は当面の問題とは何の関係もないようです。
同様の問題がありました。 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 詳細について
regionalアドレスを作成する必要があります:
gcloud compute addresses create my-secure-sftp --region europe-west2
これは、イングレスコントローラー(ステータスIN_USE)にグローバルIPを割り当てます。これがまさに必要なものです。
あなたの場合、グローバル静的と内部静的は機能しません。