[英]Erratic and slow behavior with create-react-app and Skaffold kubernetes
我让 Skaffold 与本地开发服务器和数据库部署配合得很好。 我正在尝试create-react-app
前端,但这种行为非常缓慢且不稳定。
问题
主要问题如下:
skaffold dev --port-forward --tail
需要五分钟以上,它最终开始旋转。 仅运行docker build
只需不到 30 秒。Starting the development server...
再等两分钟。 然后,十分之九,几分钟后我得到以下错误(有三个,因为那是有多少副本):
十分之一的时候,它实际上会 go 进入Compiled Successfully. You can now view in the browser.
Compiled Successfully. You can now view in the browser.
但它永远不会在 Chrome 中启动。
Syncing 1 files for <image>... Watching for changes...
,但即使刷新后也没有任何变化。我试过的
create-react-app
应用程序。 无论如何,行为都是相同的。minikube delete
和minikube start
几次(这样做是因为即使服务器部署在尝试create-react-app
后也开始出现异常行为)重现的代码和步骤
我在 macOS Mojave (10.14.6) 上使用 Docker for Mac、Kubernetes (v1.16.0)、minikube (v1.4.0)、Skaffold (v0.39.0) 和create-react-app
我将不得不跳过所有这些的安装过程,因为它相当长,所以以下步骤假设您已经设置了这个。
创建一个项目目录:
mkdir project
创建一个 Kubernetes 清单目录并进入它:
mkdir k8s && cd k8s
制作一个client-deployment.yaml
并添加以下内容:
apiVersion: apps/v1 kind: Deployment metadata: name: client-deployment spec: replicas: 3 selector: matchLabels: component: web template: metadata: labels: component: web spec: containers: - name: client image: testapp/client ports: - containerPort: 3000
制作一个client-cluster-ip-service.yaml
并添加以下内容:
apiVersion: v1 kind: Service metadata: name: client-cluster-ip-service spec: type: ClusterIP selector: component: web ports: - port: 3000 targetPort: 3000
移回父级:
cd..
创建一个skaffold.yaml
并添加以下内容:
apiVersion: skaffold/v1beta15 kind: Config build: local: push: false artifacts: - image: testapp/client context: web docker: dockerfile: Dockerfile.dev sync: manual: - src: "**/*.js" dest: . - src: "**/*.html" dest: . - src: "**/*.css" dest: . deploy: kubectl: manifests: - k8s/client-deployment.yaml - k8s/client-cluster-ip-service.yaml portForward: - resourceType: service resourceName: client-cluster-ip-service port: 3000 localPort: 3000
启动一个新的create-react-app
项目:
npx create-react-app test-app
切换到目录:
cd test-app
创建Dockerfile.dev
并添加以下内容:
FROM node:alpine WORKDIR '/app' EXPOSE 3000 CMD ["npm", "run", "start"] COPY package*./ RUN npm install COPY. .
创建一个.dockerignore
文件并添加以下内容:
node_modules *.swp
Go 回到父目录:
cd..
确保minikube
正在运行:
minikube start
运行skaffold.yaml
:
skaffold dev --port-forward --tail
这就是给我带来问题的原因。
好的。 漠视。 从一个副本开始,它运行良好。 两个工作得很好。 如果skaffold
已经在运行,则三个工作,但不是来自新的skaffold dev --port-forward --tail
。
skaffold ssh
然后做了一个top
。 内存用完了……利用率为 86%。 将其从默认的 2GB 增加到 8GB,现在它可以正常工作了。
首先使用minikube delete
删除虚拟机,然后使用minikube start --memory='8g'
创建一个新虚拟机。 现在一切都好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.