Pregunta 26 - Identificar Pods para Terminación
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.
Cuando los recursos de CPU o memoria disponibles en los nodos lleguen a su límite, Kubernetes va a matar algunos pods. Los primeros serán aquellos que estuvieran usando más recursos de los que solicitaron en su request. Si algún pod tuviera containers requests/límites de recursos definidos, ellos serán considerados como usando más de lo solicitado.
Cuando un pod no define los resources tiene un qosclass (Quality of Service) BestEffort. Ese es siempre el peor caso y será el primero en salir. El qosClass puede ser visto dentro de status.qosClass
kubectl config use-context k8s-c1-H
# Podemos hacer filtrar para analizar los pods por los maps de los requests y ver quién tiene y quién no tiene resources definido. Quién no tuviera resource definido está en la lista de los primeros 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{}
# Una solución más elegante y rápida sería
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ólo escribir en el archivo.
#/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