Questão 26 - Identificar Pods para Terminação
Question 26 | Find Pods first to be terminated
Use context: kubectl config use-context k8s-c1-H
Check all available Pods in the Namespace project-c13 and find the names of those that would probably be terminated first if the nodes run out of resources (cpu or memory) to schedule all Pods. Write the Pod names into /opt/course/e1/pods-not-stable.txt.
Quando os recursos de CPU ou memória disponíveis nos nós atingirem seu limite, o Kubernetes irá matar alguns pods. Os primeiros serão aqueles que estivem usando mais recursos do que solicitaram no seu request. Se algum pod tiver containers requests/limites de recursos definidos, eles serão considerados como usando mais do que o solicitado.
Quando um pod não defini os resources ele tem um qosclass (Quality of Service) BestEffort. Esse é sempre o pior caso e será o primeiro a sair. O qosClass pode ser visto dentro de status.qosClass
kubectl config use-context k8s-c1-H
# Podemos fazer filtrar para analisar os pods pelos maps dos requests e ver quem tem e quem não tem resources definido. Quem não tiver resource definido está na lista dos primeiros candidatos.
kubectl get pods -n project-c13 -o jsonpath="{range .items[*]} {.metadata.name} {.spec.containers[*].resources} {'\n'}"
c13-2x3-api-86784557bd-cgs8gmap[requests:map[cpu:50m memory:20Mi]]
c13-2x3-api-86784557bd-lnxvjmap[requests:map[cpu:50m memory:20Mi]]
c13-2x3-api-86784557bd-mnp77map[requests:map[cpu:50m memory:20Mi]]
c13-2x3-web-769c989898-6hbgtmap[requests:map[cpu:50m memory:10Mi]]
c13-2x3-web-769c989898-g57nqmap[requests:map[cpu:50m memory:10Mi]]
c13-2x3-web-769c989898-hfd5vmap[requests:map[cpu:50m memory:10Mi]]
c13-2x3-web-769c989898-jfx64map[requests:map[cpu:50m memory:10Mi]]
c13-2x3-web-769c989898-r89mgmap[requests:map[cpu:50m memory:10Mi]]
c13-2x3-web-769c989898-wtgxlmap[requests:map[cpu:50m memory:10Mi]]
c13-3cc-runner-98c8b5469-dzqhrmap[requests:map[cpu:30m memory:10Mi]]
c13-3cc-runner-98c8b5469-hbtdvmap[requests:map[cpu:30m memory:10Mi]]
c13-3cc-runner-98c8b5469-n9lswmap[requests:map[cpu:30m memory:10Mi]]
c13-3cc-runner-heavy-65588d7d6-djtv9map[]
c13-3cc-runner-heavy-65588d7d6-v8kf5map[]
c13-3cc-runner-heavy-65588d7d6-wwpb4map[]
c13-3cc-web-675456bcd-glpq6map[requests:map[cpu:50m memory:10Mi]]
c13-3cc-web-675456bcd-knlpxmap[requests:map[cpu:50m memory:10Mi]]
c13-3cc-web-675456bcd-nfhp9map[requests:map[cpu:50m memory:10Mi]]
c13-3cc-web-675456bcd-twn7mmap[requests:map[cpu:50m memory:10Mi]]
o3db-0{}
# Uma solução mais elegante e rápida seria
kubectl get pods -n project-c13 -o custom-columns=NAME:.metadata.name,QOS:.status.qosClass | grep BestEffort
NAME QOS
c13-3cc-runner-heavy-65588d7d6-djtv9 BestEffort
c13-3cc-runner-heavy-65588d7d6-v8kf5 BestEffort
c13-3cc-runner-heavy-65588d7d6-wwpb4 BestEffort
o3db-0 BestEffort
vim /opt/course/26/pods-not-stable.txt
Só escrever no arquivo.
#/opt/course/26/pods-not-stable.txt
c13-3cc-runner-heavy-65588d7d6-djtv9
c13-3cc-runner-heavy-65588d7d6-v8kf5
c13-3cc-runner-heavy-65588d7d6-wwpb4
o3db-0