我让Skaffold与本地开发服务器和数据库部署紧密配合。我正在尝试开发create-react-app
前端,但是该行为异常缓慢且不稳定。
问题
主要问题如下:
skaffold dev --port-forward --tail
最多需要五分钟的时间,它终于开始旋转。仅运行docker build
只需不到30秒。Starting the development server...
上两分钟。然后,十分之九,几分钟后出现以下错误(有3个,因为那是多少个副本):
十分之一,它实际上会进入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
之后服务器部署也开始出现异常)代码和复制步骤
我在使用Mac的Docker,kubernetes(v1.16.0),minikube(v1.4.0),Skaffold(v0.39.0)和create-react-app
的macOS Mojave(10.14.6)上。由于这相当冗长,因此我将不得不跳过所有这些安装过程,因此以下步骤假定您已经进行了设置。
创建项目目录:
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
返回到父目录:
cd ..
确保minikube
正在运行:
minikube start
运行skaffold.yaml
:
skaffold dev --port-forward --tail
这就是给我带来问题的原因。
答案 0 :(得分:1)
好的。漠视。从一个副本开始,效果很好。两个工作正常。如果skaffold
已经在运行,则三个可以工作,但不是从新的skaffold dev --port-forward --tail
开始。
skaffold ssh
,然后执行top
。内存用完了……利用率高达86%。将其从默认的2GB增加到8GB,现在可以正常使用了。
首先使用minikube delete
删除VM,然后使用minikube start --memory='8g'
创建一个新VM。现在一切都好。