当前位置: 首页 > 知识库问答 >
问题:

Traefik ingress在aws负载平衡器后不工作

澹台玉石
2023-03-14

在我创建了traefik守护程序集之后,我在端口80上创建了一个作为负载均衡器的服务,这是Traefik代理端口,节点自动注册到它。如果我点击elb,我得到代理404,这是可以的,因为还没有注册服务

然后,我为web-用户界面创建了一个nodeport服务。pod内的目标端口8080和blosterip上的80。我可以从集群内部卷曲traefik用户界面,它会恢复traefikUI

然后我创建了一个入口,这样当我点击elb/用户界面时,它会让我进入traefik的后端网络用户界面服务,但它失败了。我的入口中也有正确的注释,但elb不会将路径路由到运行正常的后端traefik用户界面

我在这里做错了什么?如果需要,我可以发布我所有的yml文件

UPD公司

我的yaml文件:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: traefik
  labels:
    app: traefik
spec:
  template:
    metadata:
      labels:
        app: traefik
    spec:
      containers:
      - image: traefik
        name: traefik
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
        - --web
        ports:
        - containerPort: 8080
          name: traefikweb
        - containerPort: 80
          name: traefikproxy


apiVersion: v1
kind: Service
metadata:
  name: traefik-proxy
spec:
  selector:
    app: traefik
  ports:
  - port: 80
    targetPort: traefikproxy
  type: LoadBalancer


apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
spec:
  selector:
    app: traefik
  ports:
  - name: http
    targetPort: 8080
    nodePort: 30001
    port: 80
  type: NodePort


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: default
  name: traefik-ing
  annotations:
    kubernetes.io/ingress.class: traefik
    #traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip:/ui
spec:
  rules:
  - http:
      paths:
      - path: /ui
        backend:
          serviceName: traefik-web-ui
          servicePort: 80

共有2个答案

贺飞星
2023-03-14

然后我创建了一个入口,这样当我点击elb/用户界面时,它会让我进入traefik的后端网络用户界面服务,但它失败了。"

它是如何失败的?您是否收到错误404、错误500或其他错误?

此外,对于traefik web ui服务,您不需要设置类型:NodePort,它应该是类型:ClusterIP。

当您为入口配置后端时,唯一的要求是集群内部的可用性,因此集群IP类型将足以满足这一要求。

您的服务应该是这样的:

apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
spec:
  selector:
    app: traefik
  ports:
  - name: http
    targetPort: 8080
    port: 80

如果没有它,请求将被转发到带有/用户界面前缀的UI,这绝对不是你想要的。

所有其他配置看起来都很好。

空翼
2023-03-14

如果您在私人_子网上,请使用

kind: Service
metadata:
  name: traefik-proxy
> annotations:
>     "service.beta.kubernetes.io/aws-load-balancer-internal": "0.0.0.0/0"
spec:
  selector:
    app: traefik
  ports:
  - port: 80
    targetPort: traefikproxy
  type: LoadBalancer``` 

 类似资料:
  • 在我的AWS帐户中,我当前有一个网络负载平衡器(TCP),它指向两个可用性区域(web服务器)上的两个Ec2实例,每个可用性区域都运行一个tomcat,它指向一个Ec2实例,即应用程序服务器/数据库。 在NLB上,粘性会话是启用的,因此当我在单个选项卡上从Chrome访问网络服务器时,一切正常,我的所有用户流量都发送到单个网络服务器。当我打开一个新选项卡时,似乎启动了一个新会话,我的用户流量可以发

  • 我试图为我们的服务器安装负载平衡器。如果使用http,它可以正常工作。但是当我切换到https时 我在浏览器控制台中遇到以下错误: 混合内容:页面位于'https://www.something.com/'通过HTTPS加载,但请求了一个不安全的脚本'…mootools.js'。此请求已被阻止;内容必须通过HTTPS提供 我想我做了一些硬代码,比如“http://www.something.com

  • 我有一个在AWS上运行的项目。结构如下: 我已使用AWS证书管理器为负载平衡器创建了一个证书。所以现在的流量是: 但由于加载网页时实例上没有证书,因此会收到“站点不安全”警告。 如何创建从客户端到负载均衡器后面的任何实例的完整SSL连接? 编辑 以下是nginx配置(适用于所有实例)

  • AWS推出了应用程序负载平衡器,可以进行基于路径的路由。是否可以将经典负载平衡器放在应用程序负载平衡器之后。 示例:假设我们有两个经典的负载平衡器。应用程序负载平衡器将流量路由到所有url(如应用程序负载平衡器/前端)的第一个经典负载平衡器,并将流量路由到所有url(如应用程序负载平衡器/后端)的第二个经典负载平衡器* 目前,似乎我们只能将主机置于应用程序负载平衡器之后。是否可以将负载平衡器置于应

  • 我希望在现有的服务器设置中集成WAF,因为我有经典的负载平衡器(带有EC2实例),它不支持WAF,我需要迁移到应用程序负载平衡器。 是否可以在不更改DNS(记录)的情况下将现有的经典负载平衡器迁移到应用程序负载平衡器?

  • 我正在尝试设置应用型负载均衡,以将流量转发到AWS中的Nginx入口控制器。要设置Nginx入口控制器,我使用的是从安装说明中获得的YML。 部署后,一切正常,流量正确转发到EKS pod。但是,上面的YML文件正在aws中创建“经典负载均衡器”,因为我想创建“应用型负载均衡器”。我将“service.beta.kubernetes.io/aws-load-balancer-type: elb”更