我正在尝试从GAE中的项目访问GKE上的Elasticsearch集群-灵活。由于我不需要外部负载均衡器,因此我遵循此指南: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing GKE和GAE都部署在同一区域中,但是对Elasticsearch群集的调用始终超时。任何人都可以这样做并可以分享一些提示,将不胜感激!
我的service.yaml文件如下:
apiVersion: v1
kind: Service
metadata:
name: internalloadbalancerservice
annotations:
cloud.google.com/load-balancer-type: "Internal"
labels:
app.kubernetes.io/component: elasticsearch-server
app.kubernetes.io/name: elasticsearch #label selector service
spec:
type: LoadBalancer
loadBalancerSourceRanges: # restrict access
- xxxxxxxx
ports:
- name: myport
port: 9000
protocol: TCP # default; can also specify UDP
selector:
app.kubernetes.io/name : elasticsearch # label selector for Pods
app.kubernetes.io/component: elasticsearch-server
答案 0 :(得分:3)
GCP现在具有内部负载平衡器的beta Global Access功能,该功能将允许从同一网络内的任何区域访问内部负载平衡器。
这也将对您的情况有所帮助。如果两个服务是使用内部IP地址公开的,但位于不同的区域。
全球访问功能现已稳定(对于 GKE 1.16.x 及更高版本),可以通过在服务中添加以下注释来启用它。
networking.gke.io/internal-load-balancer-allow-global-access: "true"
例如 :以下清单将使用内部IP地址创建您的internalloadbalancerservice
LoadBalancer,并且可以从同一VPC内的任何区域访问该IP。
apiVersion: v1
kind: Service
metadata:
name: internalloadbalancerservice
annotations:
cloud.google.com/load-balancer-type: "Internal"
# Required to enable global access
networking.gke.io/internal-load-balancer-allow-global-access: "true"
labels:
app.kubernetes.io/component: elasticsearch-server
app.kubernetes.io/name: elasticsearch #label selector service
spec:
type: LoadBalancer
loadBalancerSourceRanges: # restrict access
- xxxxxxxx
ports:
- name: myport
port: 9000
protocol: TCP # default; can also specify UDP
selector:
app.kubernetes.io/name : elasticsearch # label selector for Pods
app.kubernetes.io/component: elasticsearch-server
这对于 GKE 1.16.x 及更高版本非常有效。对于较旧的GKE版本,您可以参考this answer。
答案 1 :(得分:1)
为使其他任何人都免于类似情况的困扰,我将分享我为何无法从GAE连接到我的GKE应用程序的发现。 GAE位于欧洲西部地区,而GKE位于欧洲西部4a地区。我以为那是同一地区。但是将GKE区域更改为europe-west-1b是可行的。不是很明显,但是在阅读文档GAE地区“欧洲西部”和“ GKE地区欧洲”西部-1b时都在比利时。
答案 2 :(得分:0)
假设GAE应用程序和GKE群集位于同一区域,并且在同一VPC网络中,我建议确保您已创建Ingress allow firewall rules并将其应用于GKE节点作为GAE的目标应用虚拟机作为源。
“隐式拒绝入口”规则拒绝记住对VM的入口。因此,除非您创建Ingress allow防火墙规则,否则您将无法将数据包发送到任何VM。要使用Internal Load Balancing (ILB),客户端VM和后端VM必须位于相同的位置:
-地区
-VPC网络
-项目