Мы используем версию> 1.8 k8s на gcloud.К сожалению, EventStore прекращает отправку данных до тех пор, пока они не будут перезагружены.Таким образом, мы хотели бы запускать kubectl --namespace=$NAMESPACE delete pod eventstore-0
каждые 6 часов.Таким образом, у нас есть задание cron, например:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: eventstore-restart
spec:
# Run every full hour, 15 past, 30 past, 45 past every other time-unit.
schedule: "0,15,30,45 * * * *"
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 1
failedJobsHistoryLimit: 5
jobTemplate:
spec:
template:
spec:
containers:
- name: eventstore-restart
image: eu.gcr.io/$PROJECT_ID/kubectl:latest
imagePullPolicy: Always
command: [ "/bin/sh", "-c" ]
args:
- 'set -x; kubectl --namespace=$NAMESPACE get pods
| grep -ho "eventstore-\d+"
| xargs -n 1 -I {} kubectl --namespace=$NAMESPACE delete pod {}'
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
restartPolicy: OnFailure
serviceAccount: restart-eventstore
Однако, похоже, что оно расширяется до kubectl get pods ...
, переданного с помощью | { ... }
, что приводит к сбою сценария "/bin/sh: syntax error: unexpected end of file (expecting "}")
.
Как мне написать команду для удаления модуля в расписании ?