Kubernetes cron вызов работы в цикле - PullRequest
0 голосов
/ 05 июля 2018

Я использую кластер kubernetes 1.10, и я хочу запланировать задание cron, которое будет использовать скрипт bash для зацикливания и отправки запроса на конечную точку http каждые две секунды.

Вот моя работа yaml:

apiVersion: batch/v1
kind: Job
metadata:
  name: notifsender-sms-cron
  namespace: staging
spec:
  template:
    spec:
      containers:
      - name: notifsender-sms-cron
        image: alpine:latest
        command: ["/bin/sh"]
        args:
          - -c
          - >
            apk update && apk add --no-cache curl bash && bash -c 
            " echo \"Running cron loop\";
              while true; 
              do
                exit_status=$(curl -v -o /dev/null -w '%{http_code}' http://bbc.com);
                if [ $exit_status -ne 200 ]; then
                    exit 1;
                fi
                sleep 2;
              done
              "
      restartPolicy: OnFailure
  backoffLimit: 4

Проблема в том, что вывод является неожиданным, поскольку запрос скручивания выполняется только один раз и даже до цикла, чем программа выполняет цикл без какого-либо запроса скручивания:

...
 > Accept: */*
 > 
 < HTTP/1.1 301 Moved Permanently
 < Server: Varnish
 < Retry-After: 0
 < Content-Length: 0
 < Accept-Ranges: bytes
 < Date: Thu, 05 Jul 2018 17:53:32 GMT
 < Via: 1.1 varnish
 < Connection: close
 < X-Served-By: cache-fra19122-FRA
 < X-Cache: MISS
 < X-Cache-Hits: 0
 < X-Timer: S1530813212.281242,VS0,VE0
 < Location: http://www.bbc.com/
 < cache-control: public, max-age=3600
 < 

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Closing connection 0
Running cron loop
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected
bash: line 4: [: -ne: unary operator expected

Я думаю, что у меня есть ошибка в скрипте, но с моими нынешними знаниями скриптов bash я не могу решить эту проблему. Может кто-нибудь указать мне, что не так?

Спасибо

1 Ответ

0 голосов
/ 05 июля 2018

Незначительная модификация:

знак доллара $ должен быть экранирован -> \ $

" \ $ exit_status " вместо $ exit_status

bash -c " echo \"Running cron loop\";
            while true; 
            do
            exit_status=\$(curl -v -o /dev/null -w '%{http_code}' http://bbc.com);
            if [ \$exit_status -ne 200 ]; then
                exit 1;
            fi
            sleep 2;
            done
            "
...