в чем проблема с этой работой cron, она не работает. как это отладить

Я использую helm для развертывания k8s, и мне нужно задание cron, которое просто получит доступ к URL-адресу. Я написал сценарий, и сценарий работает, если я запускаю его независимо как задачу сценария оболочки. Почему задание 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 регистрирует имя пода:

% 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

person Vatan Soni    schedule 25.07.2019    source источник
comment
Добавьте описание вашего модуля Здравствуйте, пожалуйста.   -  person EAT    schedule 25.07.2019
comment
также предоставить журналы контейнера   -  person Shudipta Sharma    schedule 25.07.2019
comment
Вам нужно будет предоставить более подробную информацию, например, что происходит с модулем, запланировано ли это? Поды завершаются с ошибкой? kubectl describe po [pod_name] вместе с журналами контейнера должны показать вам, что происходит не так. Также проверьте статус объекта cronjob, какой там статус?   -  person Patrick W    schedule 26.07.2019
comment
Я обновил входные данные по моей проблеме. это дает jq: команда не найдена   -  person Vatan Soni    schedule 26.07.2019
comment
@VatanSoni, потому что в вашем изображении нет двоичного файла jq. Ваш Капитан Очевидность.   -  person Egor Stambakio    schedule 26.07.2019


Ответы (1)


Вы можете сделать это, используя любой образ, содержащий 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>
person Shudipta Sharma    schedule 26.07.2019