Требуется выполнить следующее в ansible
kubectl get pods -n default | grep "0/1" | awk {'print $1'} | xargs kubectl delete pod -n default --force --grace-period=0
Чтобы объяснить, что здесь происходит -
- Получение всех модулей в пространстве имен по умолчанию
- Привязка тех, которые находятся в состоянии НЕ ГОТОВ
- Получение только первого столбца, т.е. имени модулей
- Наконец, принудительное удаление этих модулей с помощью команды
kubectl delete
Решение Я пробовал cron-job.yaml
- name: remove dev not ready pods
hosts: localhost
remote_user: ubuntu
become: true
vars:
env: "dev"
roles:
- { role: k8s-app-cron, tags: [ 'k8s-app-cron' ] }
main.yaml в роли k8s-app-cron
---
- name: get list of pods and remove the not ready ones
shell: "noOfPODs=`kubectl get pods -n {{item}} | grep 0/1 | wc -l`; if [ $noOfPODs -gt 0 ]; then kubectl get pods -n {{item}} | grep 0/1 | awk {'print $1'} | xargs kubectl delete pod -n {{item}} --force --grace-period=0; else echo 'No Pods in NOT READY state'; fi"
# no_log: false
environment:
KUBECONFIG: "./_kubeconfig/{{ env }}/kubeconfig"
register: result
loop:
- default
- front
- back