Kubernetes在同一子域部署两个微服务,导致频繁和随机的404错误
我们有一个Kubernetes部署,由一个nodejs前端和一个nginx后端组成。我们发现这两种部署在Kubernetes中各自都可以正常工作,但是当它们都部署时,发送到前端的请求几乎有50%的时间返回404 假设我们的虚拟服务存在问题是很自然的,但事实似乎并非如此,因为vs/gateway的部署不足以引起问题。另外,如果我们在后端部署一个不同的、不相关的映像,那么前端将继续工作,不会出现404错误 该应用程序最初是通过JHipster生成的,我们手动分离前端和后端组件。前端是nodejs,后端是Java/nginx。该应用程序在本地工作,但在k8s部署中失败 此外,我们的库伯内特斯部署在Rancher 实验似乎表明它与后端部署中的某些内容有关,因此我将我们的backend deployment.yaml包括在下面:Kubernetes在同一子域部署两个微服务,导致频繁和随机的404错误,kubernetes,jhipster,istio,rancher,Kubernetes,Jhipster,Istio,Rancher,我们有一个Kubernetes部署,由一个nodejs前端和一个nginx后端组成。我们发现这两种部署在Kubernetes中各自都可以正常工作,但是当它们都部署时,发送到前端的请求几乎有50%的时间返回404 假设我们的虚拟服务存在问题是很自然的,但事实似乎并非如此,因为vs/gateway的部署不足以引起问题。另外,如果我们在后端部署一个不同的、不相关的映像,那么前端将继续工作,不会出现404错误 该应用程序最初是通过JHipster生成的,我们手动分离前端和后端组件。前端是nodejs,后
apiVersion: apps/v1
kind: Deployment
metadata:
name: ourapp-be-custom-mount
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
template:
spec:
containers:
- name: ourapp-be-custom-mount
image: "IMAGE_SET_BY_OVERLAYS_KUSTOMIZATION"
envFrom:
- configMapRef:
name: ourapp-be-config
ports:
- name: http
containerPort: 8080
resources:
limits:
cpu: "0.5"
memory: "2048Mi"
requests:
cpu: "0.1"
memory: "64Mi"
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /usr/share/h2/data
name: ourapp-db-vol01-custom-mount
securityContext:
runAsNonRoot: true
runAsUser: 1000
imagePullSecrets:
- name: regcred-nexus
volumes:
- name: ourapp-db-vol01-custom-mount
persistentVolumeClaim:
claimName: ourapp-db-pvc-volume01-custom-mount
terminationGracePeriodSeconds: 30
每个服务都需要指向不同的应用程序。您可以在Rancher中验证每个服务指向不同的应用程序。检查你的yaml。如果使用Kustomize,commonLabels:应用程序可能会让你绊倒。确保它指向前端和后端的不同应用。您将前端与java后端分开,这很好。不幸的是,您在运行
npm start
时使用的webpack dev服务器并不打算用于生产,您的包应该部署到像nginx这样的web服务器或JHipster网关。需要说明的是,您的前端不是nodejs,它使用nodejs开发工具。您是否检查了后端使用的资源?请显示相关的服务、入口和前端资源定义。很难从提供的信息中推断出任何东西。