首页 > 解决方案 > 从 Docker Swarm 迁移:向世界公开我的 Kubernetes 服务(在知名端口上)

问题描述

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

在 Docker Swarm 中,我可以通过指定暴露例如 MySQL 服务器

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,它似乎与我想要做的非常一致,但它处于测试阶段,显然面向 HTTP 服务(它不涵盖我的所有用例)。也有这种LoadBalancer类型,但我没有使用支持它的云提供商,所以这不是我的选择。

这让我有点困惑。如果我想在我的 Kubernetes 集群中公开一个服务,以便我可以从外部访问它(例如从整个互联网上some-public-ip:3306),那么推荐的(或者对初学者友好的)设置它的方法是什么?我错过了什么?

标签: kubernetesdocker-swarm

解决方案


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


推荐阅读