我在Google Cloud中有 k8s 群集,在那里有前端/ api 容器。 除此之外,我在Google Cloud中有ElasticSearch集群( es1,es2 ),但在 k8s 下没有。
我可以按名称访问 api 容器' api '来自容器' 前端'。 我可以通过名称' es1 '
从 es2 访问 es1 。从容器api / frontend中按 es1 , es2 等名称访问 es 群集的正确方法是什么?
谢谢!
答案 0 :(得分:1)
如果要引用Kubernetes集群外部的资源,就好像它们位于集群内部一样,最简单的选择可能是为每个ElasticSearch实例分配一个静态IP,然后使用手动端点指定Kubernetes服务:
https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors
您可以为每个es实例添加一个Endpoint条目。现在,您的内部群集DNS将为您的es实例解析和加载平衡,就好像它们是群集中的pod一样。
您可以像这样创建端点(请注意服务上缺少选择器):
kind: Endpoints
apiVersion: v1
metadata:
name: my-service
subsets:
- addresses:
- ip: 1.2.3.4
ports:
- port: 9376
---
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376
现在您可以正常使用my-service.my-namespace.svc.cluster.local
访问该服务。
答案 1 :(得分:0)
在与您的实例相同的网络/子网中创建Kubernetes群集(GKE),然后您可以从k8s pod连接GCE实例的内部Ip。