我运行了一个微小的(单节点)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
上的整个互联网)访问,建议的设置方式(或者是对初学者友好的)起来吗?我想念什么?
答案 0 :(得分:1)
NodePort
可能是最简单的方法,但是您需要选择30000-32767范围内的端口。这样一来,您将访问说some-public-ip:30306
,它将在内部映射到服务的端口3306
答案 1 :(得分:0)
运行ha-proxy将数据库流量代理到mysq k8服务,Ha-proxy支持https和tcp流量