gpt4 book ai didi

node.js - Kubernetes 上 pod 中的 localhost

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:23 24 4
gpt4 key购买 nike

I am trying to use Cypress to test a React application inside a Kubernetes Pod. I made two Containers inside the Pod. One for React application and one for the > Cypress test tool Docker specification of the application is :

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"]

and for the cypress

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

the Kubernetes pod spesification

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

I execute the commands in the build script

-  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

I get an error that the cypress so not find the localhost:3000 What is missing?

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 上的请求。

关于node.js - Kubernetes 上 pod 中的 localhost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51104002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com