【问题标题】:Access Kubernetes service from vm in same GCE project在同一个 GCE 项目中从 vm 访问 Kubernetes 服务
【发布时间】:2016-05-02 19:39:39
【问题描述】:

可以直接从同一 GCE 项目中的任何 vm 访问 Google Container Engine 集群中的 pod。但是服务的内部 ip 无法访问,我猜是因为它是一个虚拟 ip,并不意味着可以从外部访问。

在不使用类型负载均衡器和公开服务的情况下使服务可访问的最佳方法是什么?我需要使用入口对象和 nginx / haproxy 入口控制器吗?或者有更简单的方法吗?

【问题讨论】:

    标签: service connection kubernetes


    【解决方案1】:

    您所说的“使服务可访问”和“不公开服务”是什么意思并不完全清楚。您的意思是您希望能够从 GCE、GKE 集群外部而不是 GCP 外部访问您的服务?

    如果这就是您的意思,请查看 serviceSpec 中的 externalIP 字段 - http://kubernetes.io/docs/user-guide/services/#external-ips。您可以为您的服务分配一个外部 IP 地址,然后安装正确的防火墙规则。

    【讨论】:

    • 这正是我的意思。可以从 GKE 集群外部的 GCE 项目中的所有内容访问,但不能从 GCP 外部访问。我以前看过 externalIP 方法,但似乎我需要一个 GKE 节点外部 ip,它们是短暂的。不确定我是否可以像 Google 那样轻松地为这些节点使用静态 IP。
    【解决方案2】:

    也许为时已晚,但我也面临同样的问题,我有部分解决方案。

    我不希望我的服务被公开,所以没有适合我的入口或节点端口服务。

    在 GKE 中,Kubernetes 服务虚拟 IP 范围默认只能在集群内访问。

    但是您可以通过创建一个 GCE 路由使其能够在集群外部访问,该路由允许您将 kubernetes 服务的虚拟 IP 范围转发到任何一个 kubernetes 节点,如下所示。

    gcloud compute routes create --destination-range 10.x.x.x/20 --next-hop-instance kube-node-0

    这显然是一个 hack,因为在所有服务流量流向的节点由于任何原因(集群升级/kube 版本升级等)失败的情况下,这将失败。

    在我看来,解决方案是有一个外部节点来自动发现 kubernetes 节点并对外部服务流量进行负载平衡,尽管我还没有让它工作。

    我发现这个talk 对于理解 kubernetes 和 GKE 网络非常有用。

    【讨论】:

      【解决方案3】:

      Internal load balancer 似乎是要走的路

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-27
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 1970-01-01
        • 2021-12-26
        • 2020-05-08
        • 2019-11-19
        相关资源
        最近更新 更多