我想在特定命名空間中的 pod 上運行一個回圈,但是訣竅是在 cronJob 中執行它,是否可以行內?
kubectl get pods -n foo
這里的訣竅是在你得到 pod 串列之后,我需要回圈然后逐個洗掉,超時時間為 15 秒,是否可以在 cronJob 中做到這一點?
apiVersion: batch/v1
kind: CronJob
metadata:
name: restart
namespace: foo
spec:
concurrencyPolicy: Forbid
schedule: "*/1 * * * *"
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: pod-exterminator
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl:1.22.3
command:
- 'kubectl'
- 'get'
- 'pods'
- '--namespace=foo'
運行上面的腳本時它可以作業,但是當你想運行回圈它變得復雜時,我怎么能行內呢?
uj5u.com熱心網友回復:
在你的情況下,你可以使用這樣的東西:
apiVersion: batch/v1
kind: CronJob
metadata:
name: restart
namespace: foo
spec:
concurrencyPolicy: Forbid
schedule: "*/1 * * * *"
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: pod-exterminator
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl:1.22.3
command:
- /bin/sh
- -c
- kubectl get pods -o name | while read -r POD; do kubectl delete "$POD"; sleep 15; done
但是,您真的需要等待 15 秒嗎?如果您想在洗掉下一個之前確保該 pod 已消失,您可以使用--wait=true,因此命令將變為:
kubectl get pods -o name | while read -r POD; do kubectl delete "$POD" --wait; done
uj5u.com熱心網友回復:
這是我在洗掉 helm chart 后清理 rabbitmq 實體所做的類似操作(hyperkube 映像可以運行 kubectl 命令):
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "rabbitmq-cluster-operator.fullname" . }}-delete-instances
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-delete
"helm.sh/hook-weight": "1"
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
labels:
app: {{ template "rabbitmq-cluster-operator.name" . }}
release: {{ .Release.Name }}
spec:
template:
metadata:
name: {{ template "rabbitmq-cluster-operator.fullname" . }}-delete- instances
labels:
app: {{ template "rabbitmq-cluster-operator.name" . }}
annotations:
sidecar.istio.io/inject: "false"
spec:
restartPolicy: Never
serviceAccountName: {{ template "rabbitmq-cluster-operator.serviceAccountName" . }}
containers:
- name: kubectl
image: "{{ .Values.global.hyperkube.image.repository }}/{{
.Values.global.hyperkube.image.name }}:{{ .Values.global.hyperkube.image.tag }}"
imagePullPolicy: "{{ .Values.global.hyperkube.image.pullPolicy }}"
command:
- /bin/sh
- -c
- >
kubectl get rabbitmqclusters | while read -r entry; do
name=$(echo $entry | awk '{print $1}');
kubectl delete rabbitmqcluster $name -n {{ .Release.Namespace }};
done
請注意,這是一項作業,但可以在 cronjob 中完成類似的作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425761.html
標籤:重击 亚马逊网络服务 天蓝色 壳 Kubernetes
