【问题标题】:Traefik ingress is not working behind aws load balancerTraefik 入口在 aws 负载均衡器后面不起作用
【发布时间】:2018-05-14 17:25:32
【问题描述】:

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

然后我为 web-ui 创建了一个 nodeport 服务。在 pod 内定位端口 8080,在 clusterip 上定位端口 80。我可以从集群内部卷曲 traefik ui 并重新运行 traefik UI

然后我创建了一个入口,这样当我点击 elb/ui 时,它会将我带到 traefik 的后端 web-ui 服务,但它会失败。我的入口中也有正确的注释,但是 elb 没有将路径路由到后端运行正常的 traefik ui

我在这里做错了什么?如果需要,我可以发布我所有的 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

【问题讨论】:

  • 你好,最好发布yaml文件。
  • 我发布了 yml 文件

标签: amazon-web-services kubernetes amazon-elb traefik kubernetes-ingress


【解决方案1】:

如果您在 Private_Subnets 上,请使用

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``` 

【讨论】:

    【解决方案2】:

    然后我创建了一个入口,这样当我点击 elb/ui 时,它会将我带到 traefik 的后端 web-ui 服务,但它失败了。”

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

    另外,traefik-web-ui 服务不需要设置type: NodePort,应该是type: ClusterIP

    当您为 Ingress 配置后端时,唯一的要求是集群内部的可用性,因此 ClusterIP 类型就足够了。

    你的服务应该是这样的:

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

    选项 PathPrefixStrip 可能很有用,因为没有它,请求将被转发到带有 /ui 前缀的 UI,这是您绝对不想要的。

    所有其他配置看起来都不错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2017-01-07
      • 2021-04-25
      • 2014-12-18
      • 2017-12-18
      • 1970-01-01
      • 2019-11-06
      相关资源
      最近更新 更多