从Docker Swarm迁移:将我的Kubernetes服务公开(在知名端口上)

时间:2019-02-05 17:10:19

标签: kubernetes docker-swarm

我运行了一个微小的(单节点)Docker Swarm集群,我想迁移到Kubernetes,但我不知道如何在特定端口上公开服务,以便可以从外部访问它世界。

在Docker Swarm中,我可以公开例如通过指定

ports:
  - '3306:3306'

作为我的堆栈配置文件中服务块的一部分,这使我可以在127.0.0.1:3306上对其进行访问。

要在Kubernetes中复制此代码,我的本能是使用NodePort服务类型并指定

ports:
  - port: 3306
    targetPort: 3306
    nodePort: 3306
服务规范中的

。但这是不允许的:Kubernetes告诉我provided port is not in the valid range. The range of valid ports is 30000-32767

然后有Ingress,它似乎与我想做的事情紧密相关,但是it's in beta显然适合于HTTP服务(不涵盖我的所有用例)。也有LoadBalancer类型,但是我没有使用支持它的云提供商,所以这对我来说不是一个选择。

这让我有些困惑。如果我想在我的Kubernetes集群中公开一项服务以便可以从外部访问它(例如,从some-public-ip:3306上的整个互联网)访问,建议的设置方式(或者是对初学者友好的)起来吗?我想念什么?

2 个答案:

答案 0 :(得分:1)

NodePort可能是最简单的方法,但是您需要选择30000-32767范围内的端口。这样一来,您将访问说some-public-ip:30306,它将在内部映射到服务的端口3306

答案 1 :(得分:0)

运行ha-proxy将数据库流量代理到mysq k8服务,Ha-proxy支持https和tcp流量