我正在尝试建立一个非常简单的 Kubernetes 集群,其中包含前端、后端和数据库服务。以下是前端服务定义文件的一部分:
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
tier: frontend
spec:
selector:
tier: frontend
ports:
- port: 80
nodePort: 30080
type: LoadBalancer
当我通过端口 30080 访问集群的 IP 时,一切正常。
现在,我正在尝试设置一个将在端口 80 上运行的 Ingress(为将集群部署到 Azure 做准备)。我想将所有 HTTP 流量定向到前端,因为这是我集群中唯一的 HTTP 服务。因此,入口定义文件如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: zippori
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
spec:
backend:
serviceName: frontend
servicePort: 80
但是当我访问http://minikube-ip我收到以下非常简单的错误:
默认后端 - 404
就好像 Ingress 没有转发任何东西到我的前端,而只是尝试它自己的默认后端。
我怎样才能解决这个问题?
答案1
该问题出在 Ingress 服务上。
在 Ingress kind yaml 中,您使用注释来定义“ingress backend”。对于 AKS,它是“addon-http-application-routing”,但对于 minikube,开箱即用的是kubernetes.io/ingress.class: nginx
使用适当的注释更新 Ingress 应该可以为您的 minikube 设置提供服务。