【发布时间】: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