You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes如何实现子域名请求自动路由到对应Pod的DNS地址

Kubernetes动态子域名路由到对应工作负载的实现方案

你的场景核心是避免硬编码每个用户子域名的路由规则,实现新增用户Pod时自动承接对应{用户标识}.cybearjinni.com的入站请求,以下是可直接落地的方案:

  • 方案1:通配符Ingress + Nginx动态转发(轻量首选,适合中小规模场景)
    仅需配置1条通用通配符Ingress规则,无需新增用户时修改配置,利用Ingress Nginx的变量提取能力自动匹配对应用户的工作负载,配置示例如下:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: user-wildcard-ingress
      annotations:
        nginx.ingress.kubernetes.io/use-regex: "true"
        nginx.ingress.kubernetes.io/configuration-snippet: |
          # 提取子域名中的用户标识
          set $user_id "";
          if ($host ~* "^([a-zA-Z0-9]+)\.cybearjinni\.com$") {
            set $user_id $1;
          }
          # 转发到对应用户的Service(建议用Service而非直接绑定Pod,避免Pod重建后路由失效)
          proxy_pass http://$user_id.default.svc.cluster.local$request_uri;
    spec:
      ingressClassName: nginx
      rules:
      - host: "*.cybearjinni.com"
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              # 此处默认服务仅做占位,实际请求会被snippet中的proxy_pass覆盖
              service:
                name: default-placeholder-svc
                port:
                  number: 80
    
    你只需要提前统一命名规则:每个用户创建Pod时同步创建同名的ClusterIP Service,比如用户标识为nnnnnna的账号,对应Service名称也为nnnnnna,即可自动完成路由匹配。
  • 方案2:Operator自动生成独立Ingress规则(适合大规模、有差异化配置需求的场景)
    如果每个用户的路由规则存在差异化配置(比如限流、鉴权规则不同),可以开发轻量Operator监听用户工作负载的创建事件,新用户资源创建完成后自动生成对应子域名的Ingress资源,完全无需人工介入。
  • 方案3:Gateway API动态路由(适合长期迭代、路由规则复杂的场景)
    如果你已经在使用Kubernetes Gateway API替代传统Ingress,可以通过HTTPRoute的通配符主机匹配+路由过滤器实现更灵活的动态转发,可扩展性远高于传统Ingress。

场景示意图

内容的提问来源于stack exchange,提问作者Guy Luz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:04