簡體   English   中英

kubernetes上的Pod中的localhost

[英]localhost in pods on kubernetes

我正在嘗試使用賽普拉斯在Kubernetes Pod中測試React應用程序。 我在Pod內制作了兩個容器。 一種用於React應用程序,另一種用於> Cypress測試工具Docker應用程序規范是:

FROM node:9-slim AS app
ENV PORT 3000
EXPOSE 3000

COPY . /usr/src/app
WORKDIR /usr/src/app
RUN npm install react --save
RUN npm install ajv --save
CMD ["npm", "start"]

和柏樹

FROM cypress/base AS cypress
COPY . /test
WORKDIR /test
RUN npm i --save-dev cypress
RUN npm install ajv --save-dev

CMD $(npm bin)/cypress run --record --key 92213f49-6b80-47d5-bbef-2422f308ebf1 -s ./cypress/integration/SystemTest.js

Kubernetes莢化

apiVersion: v1
kind: Pod
metadata:
   name: productlib-pod
spec: 
  restartPolicy: Never
  containers:
     - name: app-container
       image: steinko/app-productlib:1

     - name: cypress-container
       image: steinko/cypress-productlib:1

我在構建腳本中執行命令

-  docker login -u steinko -p DavidBowie1!

    -  docker  build  -t steinko/app-productlib:1 -f Dockerfile.app .
    -  docker  push steinko/app-productlib:1

    -  docker build -t steinko/cypress-productlib:1 -f Dockerfile.cypress .
    -  docker push steinko/cypress-productlib:1

    -  kubectl apply -f pod.yaml 

我得到一個錯誤,表明柏樹找不到本地主機:3000缺少什么?

It looks like this is your first time using Cypress: 3.0.1

[13:08:43]  Verifying Cypress can run /root/.cache/Cypress/3.0.1/Cypress [started] [13:08:46]  Verified Cypress!       /root/.cache/Cypress/3.0.1/Cypress [title changed] [13:08:46]  Verified Cypress!       /root/.cache/Cypress/3.0.1/Cypress [completed]

Opening Cypress...

================================================================================

  (Run Starting)



┌────────────────────────────────────────────────────────────────────────────┐  
│ Cypress:  3.0.1                                                            │  
│ Browser:  Electron 59 (headless)                                           │  
│ Specs:    1 found (SystemTest.js)                                          │  
│ Searche…  cypress/integration/SystemTest.js                                │  
│ Run URL:  https://dashboard.cypress.io/#/projects/rwxp3c/runs/609          │  
└────────────────────────────────────────────────────────────────────────────┘  



────────────────────────────────────────────────────────────────────────────────
                                                                                   Running: SystemTest.js...                                            (1 of 1) 


  Spesifies client behaivior
    1) should diapley hello world in div
    ✓ should be true (64ms)


  1 passing (1m)   1 failing

  1) Spesifies client behaivior should diapley hello world in div:
     CypressError: Timed out after waiting '60000ms' for your remote page to load.

Your page did not fire its 'load' event within '60000ms'.

You can try increasing the 'pageLoadTimeout' value in 'cypress.json' to wait longer.

Browsers will not fire the 'load' event until all stylesheets and scripts are done downloading.

When this 'load' event occurs, Cypress will continue running commands.
      at Object.cypressErr (http://localhost:42219/__cypress/runner/cypress_runner.js:67929:11)
      at Object.throwErr (http://localhost:42219/__cypress/runner/cypress_runner.js:67894:18)
      at Object.throwErrByPath (http://localhost:42219/__cypress/runner/cypress_runner.js:67921:17)
      at timedOutWaitingForPageLoad (http://localhost:42219/__cypress/runner/cypress_runner.js:58198:17)
      at http://localhost:42219/__cypress/runner/cypress_runner.js:58807:18
      at tryCatcher (http://localhost:42219/__cypress/runner/cypress_runner.js:7091:23)
      at http://localhost:42219/__cypress/runner/cypress_runner.js:2408:41
      at tryCatcher (http://localhost:42219/__cypress/runner/cypress_runner.js:7091:23)
      at Promise._settlePromiseFromHandler (http://localhost:42219/__cypress/runner/cypress_runner.js:5113:31)
      at Promise._settlePromise (http://localhost:42219/__cypress/runner/cypress_runner.js:5170:18)
      at Promise._settlePromise0 (http://localhost:42219/__cypress/runner/cypress_runner.js:5215:10)
      at Promise._settlePromises (http://localhost:42219/__cypress/runner/cypress_runner.js:5290:18)
      at Async._drainQueue (http://localhost:42219/__cypress/runner/cypress_runner.js:2023:16)
      at Async._drainQueues (http://localhost:42219/__cypress/runner/cypress_runner.js:2033:10)
      at Async.drainQueues (http://localhost:42219/__cypress/runner/cypress_runner.js:1907:14)
      at <anonymous>




  (Results)

┌───────────────────────────────────┐
│ Tests:        2                   │
│ Passing:      1                   │
│ Failing:      1                   │
│ Pending:      0                   │
│ Skipped:      0                   │
│ Screenshots:  1                   │
│ Video:        true                │
│ Duration:     1 minute, 0 seconds │
│ Spec Ran:     SystemTest.js       │
└───────────────────────────────────┘


  (Screenshots)

  - /test/cypress/screenshots/Spesifies client behaivior -- should diapley hello world in div.png (1280x720)


  (Video)

  - Started processing:   Compressing to 32 CRF
  - Compression progress:  45%
  - Compression progress:  91%
  - Finished processing:  /test/cypress/videos/SystemTest.js.mp4 (22 seconds)


  (Uploading Results)

  - Done Uploading (1/2) /test/cypress/screenshots/Spesifies client behaivior -- should diapley hello world in div.png
  - Done Uploading (2/2) /test/cypress/videos/SystemTest.js.mp4

================================================================================

  (Run Finished)


      Spec                                    Tests  Pass…  Fail…  Pend…  Skip…



┌────────────────────────────────────────────────────────────────────────────┐
│ ✖ SystemTest.js                   01:00      2      1      1      -     -  │
└────────────────────────────────────────────────────────────────────────────┘

    1 of 1 failed (100%)              01:00      2      1      1      -      -  


───────────────────────────────────────────────────────────────────────────────────   
                                                                                Recorded Run: https://dashboard.cypress.io/#/projects/rwxp3c/runs/609

我建議您檢查應用程序的運行狀況。

將第三個帶有Ubuntu的容器添加到您的pod中:

apiVersion: v1
kind: Pod
metadata:
   name: productlib-pod
spec: 
  restartPolicy: Never
  containers:
     - name: app-container
       image: steinko/app-productlib:1

     - name: cypress-container
       image: steinko/cypress-productlib:1

     - name: ubuntu
       image: ubuntu
       args: [bash, -c, 'apt-get update && apt-get -y install curl less net-tools && while true ; do sleep 1000; done']

等待直到安裝了Ubuntu中的軟件包:

$ kubectl logs productlib-pod ubuntu

<skipped>
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

在ubuntu容器中執行bash:

$ kubectl exec -ti productlib-pod -c ubuntu -- bash

檢查端口3000是否處於LISTEN狀態:

root@productlib-pod# netstat -anl

如果是這樣,請嘗試使用curl連接到它:

root@productlib-pod# curl http://localhost:3000

這樣,您可以確保應用程序能夠響應端口3000上的請求。

您應該在Pod定義中設置容器暴露的端口。 就像是:

    ports:
    - containerPort: 3000
      protocol: 'TCP'

ATT。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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