我想将服务从一个GKE集群连接到另一个集群。我将服务创建为内部负载平衡器,并希望为其添加一个静态IP。我创建了service.yml
apiVersion: v1
kind: Service
metadata:
name: ilb-service
annotations:
cloud.google.com/load-balancer-type: "Internal"
kubernetes.io/ingress.global-static-ip-name: es-test
labels:
app: hello
spec:
type: LoadBalancer
selector:
app: hello
ports:
- port: 80
targetPort: 8080
protocol: TCP
但是在应用-f之后,当我检查服务时,负载均衡器入口看起来像这样:
status:
loadBalancer:
ingress:
- ip: 10.156.0.60
而且我无法使用静态IP进行连接。如何解决?
编辑:
After suggestion I changed the yml file to:
apiVersion: v1
kind: Service
metadata:
name: ilb-service
annotations:
cloud.google.com/load-balancer-type: "Internal"
labels:
app: hello
spec:
type: LoadBalancer
selector:
app: hello
ports:
- port: 80
targetPort: 8080
protocol: TCP
loadBalancerIP: "xx.xxx.xxx.xxx" -- here my static ip
服务现在看起来像这样:
spec:
clusterIP: 11.11.1.111
externalTrafficPolicy: Cluster
loadBalancerIP: xx.xxx.xxx.xxx
ports:
- nodePort: 31894
port: 80
protocol: TCP
targetPort: 8080
selector:
app: hello
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer: {}
我仍然无法连接
答案 0 :(得分:3)
您不会将注释用于内部IP。相反,只需在spec.loadBalancerIP
field中指定要使用的IP地址(而不是名称),即可指定要分配给loadBalancer的数字IP地址。确保IP不在其他任何地方使用,并且与群集位于同一子网内。
编辑
要澄清最后一条语句:如果将内部IP保留为静态IP,则该IP不再可用,静态保留将其视为“正在使用”。要将IP分配给内部LoadBalancer,不得保留IP,也不能使用该IP。
这还不清楚,但这是由于GCP控制器如何创建内部负载平衡器而导致它无法使用已经保留的IP地址。