What I have:
我使用单节点Rancher 2.0部署创建了一个Kubernetes集群 . 其中有3个etcd,控制节点和2个工作节点连接到集群 .
What I did:
我在这个集群中部署了一个API网关,并在端口5000上的2个节点上部署了一个带有5个pod的 mydemoapi
服务(无数据库),我不想公开公开 . 因此,我只是在API网关 http:\\mydemoapi:5000
中使用服务名称映射了该服务 endpoints ,并且网关公共 endpoints 可以访问它 .
Problem statement:
mydemoapi
服务以随机方式提供,而不是循环提供,因为 kube-proxy
的默认设置是随机的Rancher documentation Load balancing in Kubernetes
Partial success:
我在Rancher规则中使用 Keep the existing hostname option
创建了一个入口负载均衡器,使用此URL mydemoapi.<namespace>.153.xx.xx.102.xip.io
并将此服务附加到ingress,它以循环方式提供,但有一个问题 . 此服务使用xip.io与我的工作节点的公共IP并公开公开 .
Help needed:
我想将我的内部clusterIP服务映射到具有内部访问权限的网关,以便它可以以循环方式内部提供给网关,从而提供给网关公共 endpoints . 我不想在没有网关的情况下公开我的服务 .
1 回答
不确定您正在运行哪个 Cloud ,但如果您在AWS之类的东西中运行,则可以在
Service
定义上将以下注释设置为true
:其他 Cloud 提供商也有类似的解决方案,有些甚至没有 . 在这种情况下,您将必须使用NodePort服务并重定向外部负载均衡器,例如haproxy或nginx,以将流量转发到NodePort
另一种选择是,如果你想在服务之间进行循环,则根本不使用
Ingress
更改kube-proxy
配置以使用旧的namespace代理模式或更强化的ipvs代理模式 .