【问题标题】:Ingress doesn't route to service on EKSIngress 不会路由到 EKS 上的服务
【发布时间】:2020-12-25 23:55:05
【问题描述】:

我正在尝试在 EKS 上运行入口,这样当您进入带有前缀 /dc(即 abc.com/dc)的网站时,它将路由到 dc-svc 服务。 但是由于某种原因,当我输入/dc 时,我得到了404: Not Found

服务 (dc-svc) 是 NodePort,但是当我将其更改为 LoadBalancer 时,我可以通过 LoadBalancer 链接进入部署,所以我认为它的唯一问题是入口。

这是yamls:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: abc-ingress
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'
    alb.ingress.kubernetes.io/inbound-cidrs: 0.0.0.0/0
    external-dns.alpha.kubernetes.io/hostname: abc.com, www.abc.com
spec:
  tls:
  - hosts:
     - abc.com
     - www.abc.com
  rules:
  - http:
      paths:
      - path: /dc
        backend:
          serviceName: dc-svc
          servicePort: 9090
  - host: abc.com
  - http:
      paths:
      - backend:
          serviceName: abc-svc
          servicePort: 8000
  - host: www.abc.com
  - http:
      paths:
      - backend:
          serviceName: abc-svc
          servicePort: 8000

apiVersion: v1
kind: Service
metadata:
  name: dc-svc
spec:
  type: NodePort
  selector:
    app: dc
  ports:
  - port: 9090
    name: "serving-dc"
    targetPort: 8080

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: dc-deployment
  name: dc
spec:
  replicas: 3
  selector:
    matchLabels:
      app: dc
  template:
    metadata:
      labels:
        app: dc
    spec:
      containers:
      - name: dc-container
        image: docker.io/image:1.0
        ports:
        - containerPort: 8080

【问题讨论】:

  • 您已经安装了负载均衡控制器? github.com/kubernetes-sigs/aws-load-balancer-controller
  • 入口本身适用于根网站(即abc.com),但不适用于其他前缀。所以入口安装正确。
  • 您是否尝试像为 HTTPS 一样为 HTTP 定义端口?看注解:alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' 添加注解alb.ingress.kubernetes.io/target-type: instance 也尝试添加alb.ingress。 kubernetes.io/actions.ssl-redirect:注释。

标签: kubernetes kubernetes-ingress amazon-eks


【解决方案1】:

您的入口配置中似乎有错字。 “http”和“host”应该在同一个部分。

代替:

  - http:
      paths:
      - path: /dc
        backend:
          serviceName: dc-svc
          servicePort: 9090
  - host: abc.com

使用

  - host: abc.com
    http:
      paths:
      - path: /dc
        backend:
          serviceName: dc-svc
          servicePort: 9090
    

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2021-01-11
    • 2021-12-03
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多