GKEのロードバランサーに静的外部IPを設定しようとしていますが、うまくいきません。これが私のKubernetesサービス設定ファイルです。
kind: Service
apiVersion: v1
metadata:
name: myAppService
spec:
selector:
app: myApp
ports:
- protocol: TCP
port: 3001
targetPort: 3001
type: LoadBalancer
loadBalancerIP: *********
これは機能しません。外部IPが*********と表示されることを期待していますが、保留中と表示されます。
➜ git:(master) kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ********* <none> 443/TCP 5m
myAppService ********* <pending> 3001:30126/TCP 5m
詳細:
➜ git:(master) kubectl describe services
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: *********
Port: https 443/TCP
Endpoints: *********
Session Affinity: ClientIP
Events: <none>
Name: myAppService
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=myApp
Type: LoadBalancer
IP: *********
Port: <unset> 3001/TCP
NodePort: <unset> 30126/TCP
Endpoints:
Session Affinity: None
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
5m 20s 7 service-controller Normal CreatingLoadBalancer Creating load balancer
5m 19s 7 service-controller Warning CreatingLoadBalancerFailed Error creating load balancer (will retry): Failed to create load balancer for service default/myAppService: Cannot EnsureLoadBalancer() with no hosts
何か案は?
これは私も行き詰まりました、誰かがこれが役立つと思うことを願っています。
Dirk が言ったことに加えて、地域の静的IPアドレスとは対照的にグローバルな静的IPアドレスを予約した場合。ドキュメントでここに説明されているように、Ingresを使用する必要があります。 静的IPアドレスを使用したドメイン名の構成 具体的にはステップ2b。
したがって、基本的に静的IPを予約しますgcloud compute addresses create helloweb-ip --global
アングルを追加します。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloweb
# this is where you you add your reserved ip
annotations:
kubernetes.io/ingress.global-static-ip-name: helloweb-ip
labels:
app: hello
spec:
backend:
serviceName: helloweb-backend
servicePort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: helloweb-backend
labels:
app: hello
spec:
type: NodePort
selector:
app: hello
tier: web
ports:
- port: 8080
targetPort: 8080
このドキュメントでは、手順2aでタイプ「LoadBalancer」を選択した場合に静的IPを割り当てる方法についても説明しています。
同じ問題が発生しましたが、ドキュメントを注意深く読んだ後、静的IPを誤って予約していたことがわかりました。タイプLoadBalancer
のサービスは、地域のネットワークロードバランサーを作成します。したがって、予約する静的IPアドレスも(クラスターのレゴインで)リージョナルである必要があります。このソリューションに変更したとき、すべてがうまくいきました...