Удалите все НЕ ГОТОВЫЕ поды в кубернетах через модуль ansible k8s - PullRequest
1 голос
/ 19 июня 2020

Требуется выполнить следующее в 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
...