[英]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.