【问题标题】:Make Kubernetes Service Accessible Externally使 Kubernetes 服务可从外部访问
【发布时间】:2015-12-14 16:48:51
【问题描述】:

我们有一个私有 kubernetes 集群,运行在具有私有地址的裸机 CoreOS 集群(使用 Flannel 进行网络覆盖)上。

在这个集群之上,我们运行一个 kubernetes ReplicationController 和 Service for elasticsearch。为了启用负载平衡,该服务定义了一个 ClusterIP - 这也是一个私有 IP 地址:10.99.44.10(但与节点 IP 地址的范围不同)。

我们面临的问题是我们希望能够从集群外部连接到这个ClusterIP。据我们所知,我们的专用网络中的其他机器无法联系到此专用 IP...

我们怎样才能做到这一点?


节点的IP地址是:

 node 1  - 192.168.77.102
 node 2  - 192.168.77.103

.

这就是使用 kubectl 时 Service、RC 和 Pod 的显示方式:

NAME            LABELS          SELECTOR              IP(S)           PORT(S)
elasticsearch   <none>          app=elasticsearch     10.99.44.10     9200/TCP


CONTROLLER     CONTAINER(S)    IMAGE(S)       SELECTOR            REPLICAS
elasticsearch  elasticsearch   elasticsearch  app=elasticsearch   1


NAME                       READY     STATUS    RESTARTS   AGE
elasticsearch-swpy1         1/1       Running   0          26m

【问题讨论】:

    标签: docker kubernetes coreos google-kubernetes-engine flannel


    【解决方案1】:

    你需要设置你的Service的type

    http://docs.k8s.io/v1.0/user-guide/services.html#external-services

    如果您使用的是裸机,则您没有集成 LoadBalancer。您可以使用 NodePort 在每个 VM 上获取一个端口,然后设置您用于负载平衡的任何内容,以针对任何节点上的该端口。

    【讨论】:

    • 感谢您的回复。当你说“任何节点上的那个端口”时——你的意思是把 LB 指向 all 节点吗?那么如果接收流量的节点没有运行该特定服务会发生什么?它会使用 kube-proxy 将其重定向到正确的节点吗?
    • 对不起“那个端口”是指为您的服务端口分配的nodePort。这将是我们在内部分配的一个新端口号(以便您可以在每台机器上拥有相同的端口号)。这将陷入 kube-proxy 并重定向到服务,无论哪个节点。
    • 非常感谢蒂姆(很抱歉回复太晚了)。我们通过在 RC 配置文件type: NodePortnodePort: 30222 中设置静态 NodePort 号来实现这一点。然后我们将 haproxy 指向两个节点(在端口 30222 上)以实现高可用性。
    【解决方案2】:

    您可以使用 nodeport,但也可以使用 hostport 进行一些守护程序和部署,并使用 hostnetwork 为 pod 提供总节点网络访问权限

    IIRC,如果你有足够新的 kubernetes,每个节点都可以将流量转发到内部网络,所以如果你在客户端/交换机中创建正确的路由,你可以通过将这些 TCP/IP 包传递到内部网络来访问内部网络一个节点。然后节点将接收到包并 SNAT+转发到 clusterIP 或 podIP。

    最后,barebone 现在可以将MetalLB 用于 kubernetes 负载均衡器,这主要是以更自动和冗余的方式使用最后一个功能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2021-12-06
      • 2018-11-14
      • 1970-01-01
      • 2021-05-18
      • 2022-11-17
      • 1970-01-01
      相关资源
      最近更新 更多