#kubernetes #jobs #google-kubernetes-engine #kubectl #kubernetes-cronjob
#kubernetes #Вакансии #google-kubernetes-engine #kubectl #kubernetes-cronjob
Вопрос:
задание kubernetes cron, которое должно выполняться каждые 10 минут и должно удалять модули, которые находятся в состоянии «Завершение» во всех пространствах имен в кластере? пожалуйста, помогите мне out….am проблема со скриптом оболочки bash one liner
apiVersion: batch/v1
kind: Job
metadata:
name: process-item-$ITEM
labels:
jobgroup: jobexample
spec:
template:
metadata:
name: jobexample
labels:
jobgroup: jobexample
spec:
containers:
- name: c
image: busybox
command: ["sh", "-c", "echo Processing item $ITEM amp;amp; sleep 5"]
restartPolicy: Never
Комментарии:
1. Зачем вам это нужно?
2. в моем кластере по какой-то причине модули переходят в состояние завершения, и на самом деле не завершая его, они остаются там, поэтому я не хочу вручную переходить к каждому модулю и удалять модули, которые находятся в состоянии завершения, поэтому я ищу cron, который это делает @cgcgbcbc
3. Вы устанавливаете
pod.Spec.TerminationGracePeriodSeconds
в своем шаблоне модуля, чтобы завершающие модули уничтожались через определенный период4. @cgcgbcbc если вы не возражаете, можете ли вы опубликовать образец yaml, в котором есть эта функция?
5. @cgcgbcbc я должен добавить это при развертывании?
Ответ №1:
Перечислите все завершающие модули во всех пространствах имен в формате {namespace}.{name}
kubectl get pods --field-selector=status.phase=Terminating --output=jsonpath='{range .items[*]}{.metadata.namespace}{"."}{.metadata.name}{"n"}{end}' --all-namespaces=true
Учитывая имя модуля и его пространство имен, его можно принудительно удалить с помощью
kubectl delete pods <pod> --grace-period=0 --force --ns=<namespace>
В одной строке
for i in `kubectl get pods --field-selector=status.phase=Terminating --output=jsonpath='{range .items[*]}{.metadata.namespace}{"."}{.metadata.name}{"n"}{end}' --all-namespaces=true`; do kubectl delete pods ${i##*.} --grace-period=0 --force --ns=${i%%.*}; done