gpt4 book ai didi

kubernetes - 在 Kubernetes 内部使用 "kubectl delete pods X"

转载 作者:行者123 更新时间:2023-12-04 01:05:37 24 4
gpt4 key购买 nike

我们在 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

但是,这似乎扩展到 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

或(你的方式)
kubectl get pods -n $NAMESPACE -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep eventstore | xargs -n 1 -I {} kubectl delete po {}

现在,如果您知道要删除 pod“eventstore-0”,为什么不直接执行 kubectl delete pod eventstore-0 ?

关于kubernetes - 在 Kubernetes 内部使用 "kubectl delete pods X",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50640767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com