Я хочу получить список модулей, застрявших в состоянии завершения более чем на 10 минут, используя Ansible. В настоящее время я пишу сценарий для этого, но чувствую, что должен быть лучший способ сделать то же самое. Я планирую заменить команду describe
pod на delete
в следующем фрагменте кода.
# Command used to delete : kubectl delete pod $PodName -n {{item}} --force --grace-period=0;
- name: get list of pods and remove the not ready ones
shell: |
noOfPODs=`kubectl get pods -n {{item}} | egrep "0/1|Terminating" | wc -l`;
if [ $noOfPODs -gt 0 ];
then
kubectl get pods -n {{item}} | egrep "0/1|Terminating" > {{ not_ready_pods_file }} ;
while read line; do
PodName=$(echo $line | awk {'print $1'})
PodTime=$(kubectl describe pod $PodName -n {{item}} | grep Terminating | awk {'print $4'} | tr -d 'mhd)')
if [ -z $PodTime ];
then
PodTime=$(echo $line | awk {'print $5'} | tr -d 'mhd')
fi
echo "$PodTime is PodTime"
if [[ $PodTime == *s ]] ;
then
echo "PodTime in seconds"
else
if [ $PodTime -gt 10 ];
then
echo "\n$PodName" >> {{ deleted_pods_file }};
kubectl delete pod $PodName -n {{item}} --force --grace-period=0;
fi
fi
done < {{ not_ready_pods_file }}
else
echo 'No Pods in NOT READY or Terminating state';
fi
environment:
KUBECONFIG: "./_kubeconfig/{{ env }}/kubeconfig"
loop:
- somenamespace
- Я пробовал использовать
k8s_info
в ansible, но это дает огромный результат, который нет time
- name: Search for all running pods
k8s_info:
kind: Pod
field_selectors:
- status.phase=Running
kubeconfig: "./_kubeconfig/{{ env }}/kubeconfig"
Есть ли лучший способ сделать это? нравится делать в Прометея и др. c. Сценарий оболочки будет работать, но не кажется правильным.