我试图设置一个 Kubernetes 入口,将外部 http 流量路由到前端 pod(带有路径/(和后端 pod(带有路径/rest/*(,但我总是收到 400 错误而不是主要的 nginx 索引.html。
所以我在第 https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer 页尝试了 Google Kubernetes 示例,但我总是收到 400 错误。知道吗?
以下是前端"cup-fe"(使用角度应用程序运行nginx(的部署描述符:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: cup-fe
namespace: default
labels:
app: cup-fe
spec:
replicas: 2
selector:
matchLabels:
app: "cup-fe"
template:
metadata:
labels:
app: "cup-fe"
spec:
containers:
- image: "eu.gcr.io/gpi-cup-242708/cup-fe:latest"
name: "cup-fe"
接下来是服务节点端口:
apiVersion: v1
kind: Service
metadata:
name: cup-fe
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: cup-fe
type: NodePort
最后但并非最不重要的一点是,将前端暴露在外部的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: http-ingress
spec:
rules:
- host: cup-fe
http:
paths:
- path: /
backend:
serviceName: cup-fe
servicePort: 80
- path: /rest/*
backend:
serviceName: cup-be
servicePort: 8080
我留下了"cup-be"部署描述符(运行野蝇(,因为它与"cup-fe"非常相似。另请注意,如果我创建负载均衡器服务而不是 NodePort,我可以访问网页,但我有一些 CORS 问题需要调用后端。
我假设您在整个特定服务配置run: cup-fe
使用了错误的选择器。由于我在服务配置中将标签替换为app: cup-fe
cup-fe
因此出现了相关的 Pod 端点,我也收到了成功的响应。
$ kubectl get ep | grep cup-fe|awk '{print $2}'
<IP_address>:80,<IP_address>:80
如果问题仍然存在,请告诉我并在我的答案下方发表评论。