soc*_*pet 5 docker reactjs kubernetes minikube skaffold
我的 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
)代码和重现步骤
我在 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
Run Code Online (Sandbox Code Playgroud)制作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
Run Code Online (Sandbox Code Playgroud)移回父级:
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
Run Code Online (Sandbox Code Playgroud)开始一个新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 . .
Run Code Online (Sandbox Code Playgroud)创建一个.dockerignore
文件并添加以下内容:
node_modules
*.swp
Run Code Online (Sandbox Code Playgroud)返回父目录:
cd ..
确保minikube
正在运行:
minikube start
跑过skaffold.yaml
:
skaffold dev --port-forward --tail
这就是给我带来问题的原因。
好的。漠视。从一个复制品开始,效果很好。两个工作得很好。如果已经运行,则三个可以工作skaffold
,但不能从新的skaffold dev --port-forward --tail
.
skaffold ssh
然后做了一个top
. RAM 即将耗尽……利用率为 86%。将其从默认的 2GB 增加到 8GB,现在工作正常。
首先使用 删除虚拟机minikube delete
,然后使用 新建虚拟机minikube start --memory='8g'
。现在一切都好了。
归档时间: |
|
查看次数: |
1351 次 |
最近记录: |