这个 cron 作业有什么问题,不是 运行。如何调试它
what is the issue with this cron job, its not running. how to debug it
我正在使用 helm 进行 k8s 部署,我需要一个只访问 url 的 cron 作业。如果我 运行 它作为 shell 脚本任务独立运行,我已经编写了脚本和脚本。为什么cron作业无法运行里面的脚本
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: sampletemplaterelease-myapi
labels:
app.kubernetes.io/name: myapi
helm.sh/chart: myapi-0.1.0
app.kubernetes.io/instance: sampletemplaterelease
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/bash
- -c
- |
accessTokenBody=$(curl -X POST -d "client_id=sample&grant_type=sample&username=sample&password=sample&override=true" https://sample.com/sample/sample)
accessToken=$(jq -r '.access_token' <<< "${accessTokenBody}" )
echo $accessToken
sfSyncTriggerResult=$(curl -X POST -H "Content-Length: 0" -H "Authorization: Bearer $accessToken" https://sample.com/sample/sample)
echo $sfSyncTriggerResult
echo "${sfSyncTriggerResult}" | jq '.'
errorCount=$(echo $sfSyncTriggerResult | jq '. | length')
echo "Total Number Of Errors"
echo $errorCount
if [ "$errorCount" -gt 0 ]
then
echo "not working, exiting"
exit 1
break
else
echo "Sync triggered successfully"
fi
restartPolicy: OnFailure
kubectl logs podname:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1183 0 1053 100 130 1193 147 --:--:-- --:--:-- --:--:-- 1339
/bin/bash: line 1: jq: command not found
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
/bin/bash: line 7: jq: command not found
/bin/bash: line 8: jq: command not found
Total Number Of Errors
Sync triggered successfully
/bin/bash: line 11: [: : integer expression expected
您可以使用任何具有 jq
的图像或在容器内安装 jq
来完成此操作。因此,我尝试的一种方法是使用 alpine
作为容器映像而不是 busybox
,然后在其中安装 jq
。参见以下内容:
spec:
template:
spec:
containers:
- name: hello
image: alpine
args:
- sh
- -c
- |
apk add --no-cache jq
<do_what_you_need>
我正在使用 helm 进行 k8s 部署,我需要一个只访问 url 的 cron 作业。如果我 运行 它作为 shell 脚本任务独立运行,我已经编写了脚本和脚本。为什么cron作业无法运行里面的脚本
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: sampletemplaterelease-myapi
labels:
app.kubernetes.io/name: myapi
helm.sh/chart: myapi-0.1.0
app.kubernetes.io/instance: sampletemplaterelease
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/bash
- -c
- |
accessTokenBody=$(curl -X POST -d "client_id=sample&grant_type=sample&username=sample&password=sample&override=true" https://sample.com/sample/sample)
accessToken=$(jq -r '.access_token' <<< "${accessTokenBody}" )
echo $accessToken
sfSyncTriggerResult=$(curl -X POST -H "Content-Length: 0" -H "Authorization: Bearer $accessToken" https://sample.com/sample/sample)
echo $sfSyncTriggerResult
echo "${sfSyncTriggerResult}" | jq '.'
errorCount=$(echo $sfSyncTriggerResult | jq '. | length')
echo "Total Number Of Errors"
echo $errorCount
if [ "$errorCount" -gt 0 ]
then
echo "not working, exiting"
exit 1
break
else
echo "Sync triggered successfully"
fi
restartPolicy: OnFailure
kubectl logs podname:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1183 0 1053 100 130 1193 147 --:--:-- --:--:-- --:--:-- 1339
/bin/bash: line 1: jq: command not found
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
/bin/bash: line 7: jq: command not found
/bin/bash: line 8: jq: command not found
Total Number Of Errors
Sync triggered successfully
/bin/bash: line 11: [: : integer expression expected
您可以使用任何具有 jq
的图像或在容器内安装 jq
来完成此操作。因此,我尝试的一种方法是使用 alpine
作为容器映像而不是 busybox
,然后在其中安装 jq
。参见以下内容:
spec:
template:
spec:
containers:
- name: hello
image: alpine
args:
- sh
- -c
- |
apk add --no-cache jq
<do_what_you_need>