![](/img/trans.png)
[英]Cannot make HTTP requests to Ocelot Gateway service from angular pod on kubernetes cluster
[英]Cannot make GET request to service from angular pod on kubernetes cluster
我有一个在 Nginx 上运行的 Angular 应用程序与 Spring 启动 Z65E8800B5C6800AAD896F888B 服务一起部署。 当我在本地启动 docker 容器时,一切正常,所以我唯一的猜测是 Kubernetes 配置有问题。
我在 Chrome 控制台中收到此错误,提供 IP 地址Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
但是,使用 DNS 名称我得到: Failed to load resource: net::ERR_NAME_NOT_RESOLVED
奇怪的是,我可以 curl 我的服务从radial/busyboxplus:curl
吊舱,但我无法从我的前吊舱 ping 我的服务(在 build 中没有 ZF6E57C9DE709E45354ZZ)5315。
我正在通过入口访问前端:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: main-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: front
servicePort: 80
我的前端:
apiVersion: apps/v1
kind: Deployment
metadata:
name: product-adviser-front-deployment
labels:
app: angular-front
version: v1
spec:
replicas: 1
selector:
matchLabels:
name: product-adviser-front-deployment
template:
metadata:
labels:
name: product-adviser-front-deployment
spec:
containers:
- name: product-adviser-front-app
image: aurrix/seb:product-adviser-front
imagePullPolicy: Always
ports:
- containerPort: 80
env:
- name: API_URL
value: http://back.default.svc.cluster.local/
readinessProbe:
initialDelaySeconds: 30
httpGet:
path: /healthz
port: 80
livenessProbe:
initialDelaySeconds: 30
httpGet:
path: /healthz
port: 80
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: front
spec:
selector:
name: product-adviser-front-deployment
ports:
- port: 80
type: NodePort
我的后端:
apiVersion: apps/v1
kind: Deployment
metadata:
name: product-adviser-back-deployment
labels:
app: backend-service
version: v1
spec:
replicas: 1
selector:
matchLabels:
name: product-adviser-back-deployment
template:
metadata:
labels:
name: product-adviser-back-deployment
spec:
containers:
- name: product-adviser-back-deployment
image: aurrix/seb:product-adviser
imagePullPolicy: Always
ports:
- containerPort: 8080
readinessProbe:
initialDelaySeconds: 30
httpGet:
path: /actuator/health
port: 8080
livenessProbe:
initialDelaySeconds: 30
httpGet:
path: /actuator/health
port: 8080
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: back
spec:
selector:
name: product-adviser-back-deployment
ports:
- port: 80
targetPort: 8080
您已设置值: http://back.default.svc.cluster.local/作为环境,您是否从前端应用程序调用此端点以获取后端服务? 如果是这样,这将不起作用,因为前端应用程序在浏览器上运行,并且浏览器将进行 API 调用。 在这种情况下,您必须在入口中添加另一个规则并将请求路由到后端 pod。
我还注意到前端服务设置为 nodePort 并且从入口直接调用该服务。 您可能希望像后端服务一样将服务设置为集群 IP(默认)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.