【发布时间】:2022-02-09 17:19:46
【问题描述】:
我正在尝试将示例 React 应用程序作为 Kubernetes 中的两个 pod 连接到 NodeJS 后端。这是(大部分)默认 CRA 和带有 Express 的 NodeJS 应用程序,即npx create-react-app my_app。
两个应用程序分别通过yarn start 和npm app.js 在本地运行良好。 React 应用程序使用package.json 中定义的代理与 NodeJS 后端通信。
反应 package.json
...
"proxy": "http://localhost:3001/"
...
反应 Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN yarn
COPY . .
CMD [ "yarn", "start" ]
NodeJS Dockerfile
FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3001
CMD [ "node", "app.js" ]
ui-部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sample-ui
namespace: my_namespace
spec:
replicas: 1
selector:
matchLabels:
app: my_namespace
component: sample-ui
template:
metadata:
labels:
app: my_namespace
component: sample-ui
spec:
containers:
-
name: sample-ui
image: xxx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
name: http
protocol: TCP
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
服务器部署
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: sample-server
namespace: my_namespace
spec:
replicas: 1
selector:
matchLabels:
app: my_namespace
component: sample-server
template:
metadata:
labels:
app: my_namespace
component: sample-server
spec:
containers:
-
name: sample-server
image: xxx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3001
name: http
protocol: TCP
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
ui-服务
apiVersion: v1
kind: Service
metadata:
name: sample-ui
namespace: my_namespace
labels: {app: sample-ui}
spec:
type: LoadBalancer
selector:
component: sample-ui
ports:
- name: listen
protocol: TCP
port: 3000
服务器服务
apiVersion: v1
kind: Service
metadata:
name: sample-server
namespace: my_namespace
labels: {app: sample-server}
spec:
selector:
component: sample-server
ports:
- name: listen
protocol: TCP
port: 3001
这两项服务在我的系统上运行良好。
获取服务
sample-server ClusterIP 10.19.255.171 <none> 3001/TCP 26m
sample-ui LoadBalancer 10.19.242.42 34.82.235.125 3000:31074/TCP 26m
但是,我的 CRA 部署多次崩溃,尽管表明它仍然是 running。
获取 pod
sample-server-598776c5fc-55jsz 1/1 Running 0 42m
sample-ui-c75ccb746-qppk2 1/1 Running 4 2m38s
我怀疑我的 React Dockerfile 配置不正确,但我不确定如何编写它以与 kubernetes 中的 NodeJS 后端一起使用。
a) 如何为我的 CRA 设置我的 Dockerfile 以使其在 pod 中运行?
b) 如何设置我的 docker 服务和 pod 以便它们进行通信?
【问题讨论】:
-
活动中有任何信息吗?
kubectl describe deployment sample-ui?kubectl describe pod sample-ui-c75ccb746-qppk2?it crashes到底是什么意思?如果它真的崩溃了,你应该在日志中看到一些关于它的信息。kubectl logs sample-ui-c75ccb746-qppk2说什么? -
谢谢,我已经在问题中更新了我的 Dockerfile。我只从 kubectl 日志中得到
yarn run v1.17.3 $ react-scripts start。 -
pod 事件中有什么东西吗?
标签: node.js docker kubernetes