Hen*_*rik 5 kubernetes eventstoredb
我们在 gcloud 上使用了 1.8 以上版本的 k8s。不幸的是 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
Run Code Online (Sandbox Code Playgroud)
但是,这似乎扩展到kubectl get pods ...
,通过管道传输| { ... }
,这会导致"/bin/sh: syntax error: unexpected end of file (expecting "}")
脚本失败。
如何编写按计划删除 Pod 的命令?
我会这样做:
kubectl delete po $(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep eventstore) -n $NAMESPACE
Run Code Online (Sandbox Code Playgroud)
或(你的方式)
kubectl get pods -n $NAMESPACE -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep eventstore | xargs -n 1 -I {} kubectl delete po {}
Run Code Online (Sandbox Code Playgroud)
现在,如果您知道要删除 pod“eventstore-0”,为什么不直接删除呢kubectl delete pod eventstore-0
?
归档时间: |
|
查看次数: |
3841 次 |
最近记录: |