簡體   English   中英

create-react-app 和 Skaffold kubernetes 行為不穩定且緩慢

[英]Erratic and slow behavior with create-react-app and Skaffold kubernetes

我讓 Skaffold 與本地開發服務器和數據庫部署配合得很好。 我正在嘗試create-react-app前端,但這種行為非常緩慢且不穩定。

問題

主要問題如下:

  1. 運行skaffold dev --port-forward --tail需要五分鍾以上,它最終開始旋轉。 僅運行docker build只需不到 30 秒。
  2. 當它最終開始旋轉時,它只是在Starting the development server...再等兩分鍾。
  3. 然后,十分之九,幾分鍾后我得到以下錯誤(有三個,因為那是有多少副本): 在此處輸入圖像描述

    十分之一的時候,它實際上會 go 進入Compiled Successfully. You can now view in the browser. Compiled Successfully. You can now view in the browser. 但它永遠不會在 Chrome 中啟動。

  4. create-react-app 中對 JS 的更改永遠不會反映在新瀏覽器中。 您必須停止並再次運行 Skaffold。 Skaffold 確實說 Syncing Syncing 1 files for <image>... Watching for changes... ,但即使刷新后也沒有任何變化。

我試過的

  1. 我真的簡化了我正在嘗試做的事情,以便更容易解決這個問題,所以我只使用了一個 OOTB create-react-app應用程序。 無論如何,行為都是相同的。
  2. minikube deleteminikube 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 我將不得不跳過所有這些的安裝過程,因為它相當長,所以以下步驟假設您已經設置了這個。

  1. 創建一個項目目錄:

    mkdir project

  2. 創建一個 Kubernetes 清單目錄並進入它:

    mkdir k8s && cd k8s

  3. 制作一個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
  4. 制作一個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
  5. 移回父級:

    cd..

  6. 創建一個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
  7. 啟動一個新的create-react-app項目:

    npx create-react-app test-app

  8. 切換到目錄:

    cd test-app

  9. 創建Dockerfile.dev並添加以下內容:

     FROM node:alpine WORKDIR '/app' EXPOSE 3000 CMD ["npm", "run", "start"] COPY package*./ RUN npm install COPY. .
  10. 創建一個.dockerignore文件並添加以下內容:

     node_modules *.swp
  11. Go 回到父目錄:

    cd..

  12. 確保minikube正在運行:

    minikube start

  13. 運行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM