我试图在GKE上托管wordpress网站,然后创建一个具有预先存在的静态IP的ELB来公开wordpress。我做了以下事情:
我的Yaml内容:
kind: Service
metadata:
labels:
app: wordpress
name: wordpress
spec:
type: LoadBalancer
loadBalancerIP: "x.x.x.x"
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: wordpres
运行以下命令-kubectl get svc -l app=wordpress --watch
时,我得到:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer x.x.x.x <pending> 80:32590/TCP 6m7s
有什么线索为什么这不起作用并给我外部IP地址?
答案 0 :(得分:2)
公开服务时,它将创建仅与区域IP地址一起使用的TCP网络负载平衡器。全局IP地址仅适用于Ingress资源类型。我建议您使用区域静态IP地址,而不是全局地址。以下是对GCP中的负载均衡器进行简要说明的链接:1我尝试将这种情况复制到我的终端,它立即对我来说具有区域IP地址,而对全局IP地址却没有任何作用。 。
答案 1 :(得分:0)
您的服务规格看起来有误。 spec.loadBalancerIP
字段应指定要分配给LB前端的“外部” IP(请注意,此处的外部表示在群集外部,此IP应该属于您的VPC或是公共IP)。>
在您的情况下,您分配的IP(192.168.0.1
)实际上就是您的clusterIP(由于Google如何在VPC中分配IP,因此该IP通常会分配给网关,所以这是有意义的)。无论您的静态IP是什么(假设35.35.35.35
),都应在适当的字段中将其指定为spec.loadBalancerIP: 35.35.35.35
。如果有必要,将在192.168.0.1
字段中定义spec.clusterIP
。