繁体   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