首页 > 解决方案 > 来自 Docker 的网络 IP 不适用于 React + Vite.js,因此无法访问 k8s pod

问题描述

我有一个非常简单的 react typescript 应用程序,并且第一次使用 Vite 来替换 Webpack。

我有以下 vite.config.js:

  server: {
    watch: {
      usePolling: true,
    },
    open: false,
    host: '0.0.0.0',
  },

并使用以下说明创建了一个 Dockerfile:

FROM node:latest
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
COPY ./build-prod ./build-prod
COPY ./node_modules ./node_modules
RUN npm install husky -g --production
RUN npm install esbuild-linux-arm64 --production
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]

当我现在运行时,docker run -p 3000:3000 hello-world-app-frontend我可以访问我的应用程序,http://localhost:3000/但打开网络地址http://172.17.0.3:3000/只会加载一个无标题窗口。

我认为这对我来说尤其是一个问题,因为我想创建一个像这样的基本 Kubernetes 配置:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: hello-world-app-frontend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello-world-app-frontend
  template:
    metadata:
      labels:
        app: hello-world-app-frontend
    spec:
      containers:
        - name: hello-world-app-frontend
          image: hello-world-app-frontend
          imagePullPolicy: Never
          ports:
            - containerPort: 3000
      restartPolicy: Always

kind: Service
apiVersion: v1
metadata:
  name: hello-world-app-frontend
spec:
  type: NodePort
  ports:
    - port: 3000
      targetPort: 3000
      protocol: TCP
      nodePort: 31000
  selector:
    app: hello-world-app-frontend

但是从我的 Pod 打开 IP 地址在我的 Chrome 中没有返回任何内容(fe http://10.106.213.128:3000/)。

NAMESPACE              NAME                                             READY   STATUS    RESTARTS      AGE
default                pod/hello-world-app-frontend-77899b46d7-cc4td    1/1     Running   0             16h
default                pod/hello-world-app-frontend-77899b46d7-vqtbz    1/1     Running   0             16h

NAMESPACE              NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default                service/hello-world-app-frontend    NodePort    10.106.213.128   <none>        3000:31000/TCP           16h

有人可以给我一些提示,我可以如何从我的 k8s pod 访问 React 应用程序吗?

标签: reactjsdockerkubernetes

解决方案


推荐阅读