V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
luxu
V2EX  ›  Kubernetes

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

  •  
  •   luxu · 30 天前 · 1276 次点击

    现在通过 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

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

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

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

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

    直接在本地 ping podIP ,curl serviceIP 。很方便的
    wencaiwulue
        10
    wencaiwulue  
       30 天前
    @wencaiwulue @luxu 支持三层以上的协议。比如:tcp /udp/icmp 等。
    CodeWind
        11
    CodeWind  
       30 天前   ❤️ 1
    最简单直接的方法就是找几台节点作为路由转发,外部要访问 svc 、pod 的网段转发路由到这几个节点上,由这些节点完成路由转发。如果是外网要访问,就在内到外的设备(比如防火墙、路由器)做端口映射,这样的方法可直接访问到 pod/svc
    winglight2016
        12
    winglight2016  
       30 天前
    访问数据库、redis 跟 k8s 有什么关系?难道你的数据库和 redis 都是安装到 k8s?
    hancai2
        13
    hancai2  
       29 天前
    @winglight2016 数据库、redis 访问 k8s 也很正常啊。 我们在 k8s 上安装数据库和中间件用了好多年了。
    luxu
        14
    luxu  
    OP
       28 天前
    最后使用多 ingress ,暂时不想使用 TLS
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:15 · PVG 08:15 · LAX 17:15 · JFK 20:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.