首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:多域设置和负载均衡器/入口策略

Kubernetes:多域设置和负载均衡器/入口策略
EN

Stack Overflow用户
提问于 2021-08-02 12:26:45
回答 2查看 1.3K关注 0票数 1

如何能够在同一个集群中使用多个域?

目前,我已经使用运行了一个集群,一个域指向一个硬件loadbalancertraefik作为一个ingress-controller

现在,我想添加指向不同工作负载/服务的第二个域。

我需要吗?

  1. 具有第二个LoadBalancer的第二个ingress-controller (并将第二个域指向第二个LB)?
  2. 将第二个域指向同一个第一个LoadBalancer,仅使用一个LoadBalancer

我是在问,因为当我将第二个域指向第二个Loadbalancer并将第一个域指向现有的ingress-controller (什么都没有发生)时遇到了问题,但是当我将我的第二个域指向第一个负载均衡器时,它似乎像预期的那样工作。

(我猜是:解"2")?

(我想保留一台进位控制器,以为我需要两台装载机)

这是否与被占领的443和80号港口有关?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-05 20:06:06

具有第二个LoadBalancer的第二个入口控制器(并将第二个域指向第二个LB)?

没有不需要第二个LoadBalancer。您可以在入口控制器的支持下单个LB并映射多个域。

将第二个域指向相同的第一个LoadBalancer,以仅使用一个控制器?

是的,您可以使用单入口控制器,在DNS中为两个域添加A值的CNAME值。

DNS,所有流量将被转发到LB,后者由入口控制器支持。

如果您使用的是Nginx入口控制器,则不同的域或主机在配置中类似。

代码语言:javascript
复制
spec:
  rules:
  - host: foobar.com
    http:
      paths:
      - backend:
          serviceName: foobar
          servicePort: 80
  - host: api.foobar.com
    http:
      paths:
      - backend:
          serviceName: foobar
          servicePort: 80

对于treafik,它也将是相同的,否则您可以创建两个单独的入口而不是一个入口。

ingress-1.yaml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kubernetes-dashboard
spec:
  rules:
  - host: dashboard.test.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: frontend
          servicePort: 80

ingress-2.yaml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kubernetes-ingress-two
spec:
  rules:
  - host: dashboard.domain.com
    http:
      paths:
      - path: /api
        backend:
          serviceName: backend
          servicePort: 80

基于路径的进一步路由,您可以在入口实现。

所以你在整个拱门上都会像

所有流量都来自一个点,即Loadbalancer服务公开的treafik控制器。

所有其他microservices都将以ClusterIP的形式运行,因为我们不想直接从互联网访问。

阅读更多信息,请访问:https://medium.com/kubernetes-tutorials/deploying-traefik-as-ingress-controller-for-your-kubernetes-cluster-b03a0672ae0c

票数 1
EN

Stack Overflow用户

发布于 2021-08-05 17:48:10

我的工作方法:

我使用两个域,都指向负载均衡器(在我的例子中是Hetzner)

  • load-balancer.hetzner.cloud/hostname: my.domain.com
  • load-balancer.hetzner.cloud/name: myloadbalancer-name
  • load-balancer.hetzner.cloud/protocol: http

  • ,我创建了一个服务type: LoadBalancer,并使用相应的值进行注释:

  • I用kubernetes.io/ingress.class: traefik注释我的入侵服务。ingress.

  • 我把路由添加到那个

代码语言:javascript
复制
┌────────────┐                                                    
│            │                                                    
│ Domain A   │───┐                                                
│            │   │                                                
└────────────┘   │    ┌───────────────┐                           
                 ├───▶│ Loadbalancer A│                           
┌────────────┐   │    └───────────────┘                           
│            │   │            │                                   
│ Domain B   │───┘            ▼                                   
│            │       ┌─────────────────┐     ┌───────────────────┐
└────────────┘       │Service          │     │Ingress            │
                     │                 │◀────│ /    -> frontend  │
                     └─────────────────┘     │ /api -> backend   │
                              │              └───────────────────┘
                       ┌──────┴──────┐                            
                       ▼             ▼                            
                 ┌───────────┐ ┌───────────┐                      
                 │Service    │ │Service    │                      
                 │ FRONTEND  │ │ BACKEND   │                      
                 │           │ │           │                      
                 └───────────┘ └───────────┘                      
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68621599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档