我正在EKS集群中运行POC java应用程序。下面是我将应用程序迁移到容器化应用程序的步骤。
- Java应用程序源代码签入到我的本地工作站。
1.执行maven命令生成包mvn包-DskipTests
1.像往常一样,mvn包命令将在目标文件夹中生成包,我可以看到所有的依赖项,包括jar文件,其中有selenium jar来运行测试用例。
1.使用docker build命令,我从源代码docker build -t myapp创建了一个docker镜像。
1.然后我使用下面的命令进入Docker容器,我可以看到我的测试用例成功执行,没有任何问题。
码头文件
FROM openjdk:8u191-jre-alpine
# Workspace
WORKDIR /usr/share/selenium_docker
# ADD jar files and any other dependencies from HOST
ADD target/selenium-docker.jar selenium-docker.jar
ADD target/selenium-docker-tests.jar selenium-docker-tests.jar
ADD target/libs libs
# add TestNG suite files
ADD duck_search_tests.xml duck_search_tests.xml
ADD saucedemo_tests.xml saucedemo_tests.xml
# run tests using provided browser/hub address/test suite module
ENTRYPOINT java -cp selenium-docker.jar:selenium-docker-tests.jar:libs/* -DBROWSER=$BROWSER -DHUB_HOST=$HUB_HOST org.testng.TestNG $MODULE
个字符
接下来,我将我的docker镜像移动到docker hub注册表中,并尝试在EKS集群中部署镜像,当我进行部署时,我可以看到pod已经启动并运行,并且我运行kubectl logs -f pod命令来验证测试用例执行,我可以看到上面的消息,如Total tests run:2、故障:0,跳过:0,但问题是每次测试用例执行完成时,pod都重新启动,其pod状态一再变为CrashLoopBackOff并运行.....
这里是K8s yaml文件
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-app-deployment-deployment
namespace: devops-java-selenium
labels:
app: sample-app-deployment
name: sample-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: sample-app-deployment
template:
metadata:
labels:
app: sample-app-deployment
name: sample-app-deployment
spec:
containers:
- name: sample-app-deployment
image: myapp
env:
- name: HUB_HOST
value: "10.1.2.3"
- name: BROWSER
value: chrome
- name: MODULE
value:
- name: selenium_grid_host
value: "4444"
volumeMounts:
- mountPath: /usr/share/selenium/test-output
name: devops-caas-java-selenium-pv
volumes:
- name: devops-caas-java-selenium-pv
hostPath:
path: /tmp/palani
型
有人能帮我一下吗。
1条答案
按热度按时间8fq7wneg1#
这是部署的本质。当窗格完成其任务时,窗格即完成。“但是部署的目的是保持一定数量的单元(副本),因此它将一次又一次地重新创建单元以实现其目的。这将导致您的CrashLoopBackOff。我想也许您应该使用一个kubernetes作业和restartPolicy:OnFailure,用于您的特定用例。