【问题标题】:How to access services in K8s from the internal non-K8s network?如何从内部非 K8s 网络访问 K8s 中的服务?
【发布时间】:2016-08-31 07:58:41
【问题描述】:

问题:如何提供从运行在 GCE 网络中的(非 K8s)服务到运行在 Kubernetes 中的其他服务的可靠访问?

背景:我们在 Google Cloud Platform 中运行托管 K8s 设置。大多数服务都是 12factor 应用程序,并且在 K8s 中运行只是正常。一些后备存储(数据库)在 K8s 之外运行。通过使用带有手动定义的端点到固定内部 IP 的无头服务来访问它们很容易。这些服务通常不需要与 K8s 中的服务“对话”。

但是一些服务在内部 GCE 网络中运行(但在 K8s 之外)需要访问在 K8s 内运行的服务。我们可以使用spec.type: NodePort 公开 K8s 服务,并与任何 K8s 节点 IP 上的此端口通信。但是我们如何才能自动找到正确的 NodePort 和有效的 Worker Node IP?或者也许有更好的方法来解决这个问题。

这种设置可能不是 K8s 部署的典型用例,但我们希望采用这种方式,直到 K8s 中的 PetSets 和 Persistent Storage 足够成熟。

当我们谈论内部服务时,我想避免在这种情况下使用外部负载均衡器。

【问题讨论】:

    标签: google-compute-engine kubernetes google-kubernetes-engine


    【解决方案1】:

    您可以通过创建“堡垒路由”或在您连接的机器上运行 kube-proxy 来使集群服务 IP 在集群外部(但在专用网络内部)有意义(参见 this answer)。

    我认为您也可以将您的 resolv.conf 指向集群的 DNS 服务,以便能够解析服务 DNS 名称。但是,如果您有多个集群,这可能会变得很棘手。

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2019-11-01
      相关资源
      最近更新 更多