自建 k8s, 外部如果访问对应的 TCP 服务?

264 天前
luxu  luxu

现在通过 Ingress 访问对应的服务, 如 a.dev.example.com 访问 dev 环境的 a 项目的 web 。b.test.example.com 访问 test 环境的 b 项目

内部通过服务连接, 如通过 a-mysql.dev 连接 a.dev.example.com 的数据库

现在想请问下大家 外部如果要访问对应的 MySQL ,Redis 这些服务怎么做呢?

查了下以下几种方式:

  1. 使用 Istio ,但是需要配置 TLS 暂时不考虑这个方法
  2. 每次创建项目时创建一个 Ingress-NGINX Controller ,然后各自绑定对应的 ConfigMap

现在想请教下大家有没有其他方法, 谢谢!

1719 次点击
所在节点   Kubernetes  Kubernetes
14 条回复
midjourney
midjourney
264 天前
每一个集群环境需要一个对外 ing ,同个这个 ing 访问对应的集群所在的 srv
paranoiagu
paranoiagu
264 天前
我是 nginx ingress 那里自己搞了 tcp 映射 的 map
paranoiagu
paranoiagu
264 天前
- --tcp-services-configmap=ingress-nginx/tcp-services
GeekGao
GeekGao
264 天前
Ingress 就行了啊
anubu
anubu
264 天前
- NodePort
- LB 类型的 Service
- ingress-nginx/tcp-services
luxu
luxu
264 天前
@GeekGao
@paranoiagu
@midjourney 因为不太了解所以最开始只创建了一个 nginx ingress , 然后通过 ingressClassName 指定它, 不知道创建多个会不会造成资源的问题就来论坛问一下,谢谢大家
jiangzm
jiangzm
264 天前
使用 Ingress 升级组件 Gateway API

一个项目对应一个"ingress controller",没必要这么搞。 只为了暴露端口还不如用 NodePort Service 。

在生产环境 mysql/redis/mq 还是不要用容器比较好
luxu
luxu
263 天前
@jiangzm 谢谢, 不了解 Gateway API ,我学习下。 不是生产环境
wencaiwulue
wencaiwulue
263 天前
@luxu 可以直接使用 kubevpn ,在本地电脑上直接访问集群网络。https://github.com/kubenetworks/kubevpn

直接在本地 ping podIP ,curl serviceIP 。很方便的
wencaiwulue
wencaiwulue
263 天前
@wencaiwulue @luxu 支持三层以上的协议。比如:tcp /udp/icmp 等。
CodeWind
CodeWind
263 天前
最简单直接的方法就是找几台节点作为路由转发,外部要访问 svc 、pod 的网段转发路由到这几个节点上,由这些节点完成路由转发。如果是外网要访问,就在内到外的设备(比如防火墙、路由器)做端口映射,这样的方法可直接访问到 pod/svc
winglight2016
winglight2016
263 天前
访问数据库、redis 跟 k8s 有什么关系?难道你的数据库和 redis 都是安装到 k8s?
hancai2
hancai2
263 天前
@winglight2016 数据库、redis 访问 k8s 也很正常啊。 我们在 k8s 上安装数据库和中间件用了好多年了。
luxu
luxu
262 天前
最后使用多 ingress ,暂时不想使用 TLS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033358

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX