Kubernetes Pod内部的微服务可访问外部数据库

时间:2019-07-31 04:13:17

标签: kubernetes

我需要一个建议,因为我现在没有功能正常的kube集群。 我们正在构建一套将在本地Kubernetes集群上运行的微服务。所有这些微服务都必须访问外部Oracle数据库和一个Kafka实例(对此clusetr)。这两个服务(DB和Kafka)将位于同一网络中,但不在Kubernetes集群中。这是客户的要求,我们无能为力。

从不同的帖子中我能理解的是:
1.创建一个类型为ExternalName的服务Yaml,然后必须提供相应的名称(CNAME)。

我的问题是,我可以在这里使用IP代替CNAME吗?由于数据库位于同一网络中,但对我来说似乎很明显。

还是我必须添加其他配置?

我可以搜索开发人员众多的帖子,这些帖子无法正确配置。因此,对确切步骤毫无疑问。

谢谢。

1 个答案:

答案 0 :(得分:0)

做到这一点的最佳方法是使用一个端点,在该端点上创建一个对象,该对象为群集内的一个名称指向外部IP地址。

https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors

apiVersion: v1
kind: Endpoints
metadata:
    name: my-service
subsets: 
    - addresses:
          - ip: 192.0.2.42
      ports:
          - port: 9376

话虽如此,剩下的唯一一点就是要确保国际集群网络范围不会与外部网络冲突,因为例如,如果您的集群上有10.0.0.0/8范围的Pod和您在外部网络上也使用了该范围的子网,例如10.0.1.0/16,广告连播永远都不会到达外部服务。