I have Skaffold working well with local development server and database deployments. I'm trying to get working on the create-react-app
front-end, but the behavior is incredibly slow and erratic.
Issues
The main problems are the following:
skaffold dev --port-forward --tail
for it finally start spinning up. Running just a docker build
takes less than 30 seconds.Starting the development server...
for another two minutes. Then, nine times out of ten, I get the following errors after several minutes (there are three because that is how many replicas there are):
One out of ten times, it will actually go into the Compiled Successfully. You can now view in the browser.
Compiled Successfully. You can now view in the browser.
It never does launch in Chrome though.
Syncing 1 files for <image>... Watching for changes...
, but nothing changes even after a refresh. What I've tried
create-react-app
application. The behavior is the same regardless.minikube delete
and minikube start
several times (did this because even the server deployment started acting erratically after trying create-react-app
) Code and Steps to Reproduce
I'm on macOS Mojave (10.14.6) using Docker for Mac, Kubernetes (v1.16.0), minikube (v1.4.0), Skaffold (v0.39.0), and create-react-app
. I'll have to skip the installation process for all of these since it is fairly lengthy, so the following steps assume you have this already setup.
Make a project directory:
mkdir project
Make a Kubernetes manifest directory and move into it:
mkdir k8s && cd k8s
Make a client-deployment.yaml
and add the following:
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
Make a client-cluster-ip-service.yaml
and add the following:
apiVersion: v1 kind: Service metadata: name: client-cluster-ip-service spec: type: ClusterIP selector: component: web ports: - port: 3000 targetPort: 3000
Move back into the parent:
cd..
Create a skaffold.yaml
and add the following:
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
Start a new create-react-app
project:
npx create-react-app test-app
Change into the directory:
cd test-app
Create a Dockerfile.dev
and add the following:
FROM node:alpine WORKDIR '/app' EXPOSE 3000 CMD ["npm", "run", "start"] COPY package*./ RUN npm install COPY. .
Create a .dockerignore
file and add the following:
node_modules *.swp
Go back into the parent directory:
cd..
Make sure minikube
is running:
minikube start
Run the skaffold.yaml
:
skaffold dev --port-forward --tail
This is what produces the issues for me.
Ok. Disregard. Started with one replica and it worked fine. Two worked fine. Three worked if skaffold
was already running, but not from a fresh skaffold dev --port-forward --tail
.
skaffold ssh
and then did a top
. Was running out of RAM... well was at 86% utilization. Increased it from the default 2GB to 8GB and now it works fine.
First deleted the VM with minikube delete
and then created a new one with minikube start --memory='8g'
. All good now.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.