继续获取连接被拒绝的Kubernetes Cron作业的错误状态?
我正在尝试编写一个cron作业,该作业将命中它正在提取映像的应用程序的rest端点。 下面是示例代码:继续获取连接被拒绝的Kubernetes Cron作业的错误状态?,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,我正在尝试编写一个cron作业,该作业将命中它正在提取映像的应用程序的rest端点。 下面是示例代码: --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: {{ .Chart.Name }}-cronjob labels: app: {{ .Release.Name }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} release: {{ .Rele
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: {{ .Chart.Name }}-cronjob
labels:
app: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
release: {{ .Release.Name }}
spec:
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 2
failedJobsHistoryLimit: 2
startingDeadlineSeconds: 1800
jobTemplate:
spec:
template:
metadata:
name: {{ .Chart.Name }}-cronjob
labels:
app: {{ .Chart.Name }}
spec:
restartPolicy: OnFailure
containers:
- name: demo
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ["/bin/sh", "-c", "curl http://localhost:8080/hello"]
readinessProbe:
httpGet:
path: "/healthcheck"
port: 8081
initialDelaySeconds: 300
periodSeconds: 60
timeoutSeconds: 30
failureThreshold: 3
livenessProbe:
httpGet:
path: "/healthcheck"
port: 8081
initialDelaySeconds: 300
periodSeconds: 60
timeoutSeconds: 30
failureThreshold: 3
resources:
requests:
cpu: 200m
memory: 2Gi
limits:
cpu: 1
memory: 6Gi
schedule: "*/5 * * * *"
但我一直遇到*curl:(7)无法连接到本地主机端口8080:连接被拒绝*
。
我可以从创建容器并立即抛出的事件中看出:退出重新启动失败的容器。
我已经有了运行演示应用程序的pods,它运行得很好,就在我试图指向这个现有应用程序并点击rest端点时,我开始遇到连接被拒绝的错误
查看日志时的精确输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to localhost port 8080: Connection refused
事件日志:
Container image "wayfair/demo:728ac13-as_test_cron_job" already present on machine
9m49s Normal Created pod/demo-cronjob-1619108100-ndrnx Created container demo
6m17s Warning BackOff pod/demo-cronjob-1619108100-ndrnx Back-off restarting failed container
5m38s Normal SuccessfulDelete job/demo-cronjob-1619108100 Deleted pod: demo-cronjob-1619108100-ndrnx
5m38s Warning BackoffLimitExceeded job/demo-cronjob-1619108100 Job has reached the specified backoff limit
作为K8的新手,任何指针都是有用的 您正试图使用curl连接到
localhost:8080
,从我对CronJob定义的理解来看,这是没有意义的
来自文档(位于)
在配置文件中定义的命令和参数
覆盖容器提供的默认命令和参数
形象。如果定义了参数,但未定义命令,则默认值为
命令与新参数一起使用
注意:命令字段对应于某些容器中的入口点
运行时。请参阅下面的注释
如果为映像定义命令,即使映像将使用其默认入口点(或命令,取决于您使用的容器类型)在本地主机的8080端口上启动rest应用程序,该命令也会覆盖入口点,并且不会启动任何应用程序
如果您需要启动应用程序,然后执行其他操作,如卷发等,我建议使用
.sh
脚本或类似的方法,取决于工作目标。您正试图使用curl连接到localhost:8080
,从我对您的CronJob定义的理解来看,这是没有意义的
来自文档(位于)
在配置文件中定义的命令和参数
覆盖容器提供的默认命令和参数
形象。如果定义了参数,但未定义命令,则默认值为
命令与新参数一起使用
注意:命令字段对应于某些容器中的入口点
运行时。请参阅下面的注释
如果为映像定义命令,即使映像将使用其默认入口点(或命令,取决于您使用的容器类型)在本地主机的8080端口上启动rest应用程序,该命令也会覆盖入口点,并且不会启动任何应用程序
如果您需要启动应用程序,然后执行其他操作,如curl等,我建议使用
.sh
脚本或类似的东西,具体取决于作业目标。为什么就绪性和活性探针指向端口8081,而curl指向8080,curl不应该指向8081吗?应用程序设置的方式是healthcheck指向8081&应用程序在8080上运行,因此curl命令需要在8080上运行为什么就绪性和活动性探针指向端口8081,curl指向8080,curl不应该指向8081吗?应用程序设置的方式是healthcheck指向8081&应用程序在8080上运行,因此curl命令需要在8080Thank@aa上运行,我能够删除命令的覆盖,并且能够启动容器,但我仍然想访问该应用程序的几个rest端点。你能建议如何调用这个有一堆卷发的shell脚本吗?还有,执行的顺序不是一个问题吗?因为我只想在应用程序启动后运行这些命令。是的,我想你应该把web应用程序进程放在前台,做一段时间轮询它(可能在健康端点上卷曲到200?),直到它准备好,然后卷曲,然后关闭所有东西。要同时运行这两个程序,如果您使用的是Docker,请检查官方文档()。另一种选择是保持REST应用程序始终在其自己的部署中启动和运行,然后让CronJob仅启动制作各种卷曲的bash脚本。或者让CronJob启动2个容器。谢谢@a,我能够删除命令的覆盖,并且能够启动容器,但是我仍然希望访问该应用程序的几个rest端点。你能建议如何调用这个有一堆卷发的shell脚本吗?还有,执行的顺序不是一个问题吗?因为我只想在应用程序启动后运行这些命令。是的,我想你应该把web应用程序进程放在前台,做一段时间轮询它(可能在健康端点上卷曲到200?),直到它准备好,然后卷曲,然后关闭所有东西。要同时运行这两个程序,如果您使用的是Docker,请检查官方文档()。另一种选择是保持REST应用程序始终在其自己的部署中启动和运行,然后让CronJob仅启动制作各种卷曲的bash脚本。或者让CronJob启动2个容器。