Javi Vela (@jvela) header
Javi Vela (@jvela) profile picture

Senior Platform Engineer. Autor de «Kubernetes 101», Kubernetes en español sin dar nada por supuesto. Sale el 1 de septiembre.

Zaragoza, Spain
Joined April 2008
Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)Photo by Javi Vela (@jvela)
1/ He escrito un libro sobre Kubernetes. En español. Sale el 1 de septiembre. Y he tomado una decisión rara que probablemente sea lo único que lo hace distinto. 🧵 #kubernetes #k8s
3
3
21
1,811
Un Pod tolera el taint gpu=true:NoSchedule. No lleva nada más. ¿Dónde acaba? #k8s #kubernetes
0%Solo en el nodo con GPU
0%En cualquier nodo
0%Pending hasta que haya GP
0%Depende del effect
0 votes • Final results
1
57
La respuesta: en cualquier nodo. Una toleration es un permiso, no una preferencia: abre la puerta del nodo con taint, pero no cierra las demás. Para que el Pod vaya a la GPU hacefalta además un nodeSelector o un nodeAffinity.
1
14
Los taints repelen y las afinidades atraen. Con hardware especializado se usan juntos, o el Pod acaba haciendo inferencia en CPU en worker-02 sin que nadie se entere. El módulo de Scheduling, gratis: javivela.dev/libros/kubernet…
13
3 de la mañana: entras por SSH, borras logs, reinicias el kubelet. No lo apuntas. Seis meses después, ningún nodo es igual a otro. Talos Linux lo ataca de raíz: sin SSH, inmutable y gestionado por API. «Talos desde cero», parte 1 👇 blog.javivela.dev/p/talos-li…
1
41
Este curso no hay sesión de planificación, así que lo preguntamos aquí: ¿te animas a dar una charla en DotNetters? Sea tu primera charla o la número 50, escríbenos por MD y la preparamos juntos.
¿Quieres dar una charla en DotNetters este curso 2026/27? Este año no hacemos sesión de planificación: escríbenos por MD y lo coordinamos. ¿Sería tu primera charla? ¡Te ayudamos a prepararla! 📍 Presencial en Zaragoza #dotnet #csharp
42
¿Quieres dar una charla en DotNetters este curso 2026/27? Este año no hacemos sesión de planificación: escríbenos por MD y lo coordinamos. ¿Sería tu primera charla? ¡Te ayudamos a prepararla! 📍 Presencial en Zaragoza #dotnet #csharp
3
1
2
214
Editas un ConfigMap que consumen tres contenedores: uno por variable de entorno, otro por volumen, otro por volumen con subPath. ¿Cuál ve el cambio sin recrear el Pod? #kubernetes #k8s
0%El de la variable
0%El del volumen
0%El del subPath
0%Ninguno de los tres
0 votes • Final results
1
49
La respuesta: solo el del volumen normal, y con hasta dos minutos de retraso. Las variables de entorno se resuelven al crear el contenedor y quedan congeladas. Y un fichero montado con subPath no se actualiza nunca: es el precio de respetar el resto del directorio. Y que el fichero cambie no significa que tu aplicación lo relea. Eso es cosa del proceso, no de Kubernetes. Capítulo 8 del libro: javivela.dev/libros/kubernet…
12
Un contenedor con limits.cpu: 500m intenta usar 800m. ¿Qué le pasa?
0%OOMKilled
0%Lo desaloja el kubelet
80%Throttling, sigue vivo
20%Nada, usa los 800m
5 votes • Final results
1
61
La respuesta: throttling. Sigue vivo, más lento. Pasarse del límite de memoria mata (OOMKilled). Pasarse del de CPU solo ralentiza: el kernel le quita tiempo hasta que vuelve a 500m. Misma sintaxis, dos mundos. Y el request de CPU no es una reserva dura: es un peso relativo cuando hay contención. Puedes usar CPU ociosa por encima de él sin que pase nada. Está en el capítulo 5 del libro: javivela.dev/libros/kubernet…
12
1/ El prólogo de mi libro lo escribe alguien que estuvo al otro lado. Eric y yo entramos como desarrolladores .NET en el mismo equipo. A los pocos meses, el equipo se reconvirtió en un equipo de plataforma porque el negocio lo necesitaba. #kubernetes #k8s
1
36
2/ «Partes de la cadena de las que antes no nos preocupábamos, aquí está el código, ya lo desplegará el devops, ahora eran nuestra responsabilidad directa.» Si has pasado por eso, sabes exactamente de qué habla.
1
15
Tres réplicas Ready detrás de un Service, sin sessionAffinity. Una atiende casi el doble de peticiones que las otras dos. ¿Qué pasa? #kubernetes #k8s
100%Round robin roto
0%El Pod más antiguo manda
0%No está roto nada
0%Falta la readiness
1 votes • Final results
1
45
La respuesta: no está roto nada. kube-proxy no hace round robin. Ni en iptables ni en nftables. Elige un Pod del EndpointSlice al azar en cada petición. Con pocas peticiones, el reparto no tiene por qué ser parejo. Lo único que impide que una petición caiga en un Pod que no puede atenderla es la readiness probe: es lo que lo saca del EndpointSlice. Cada martes, una de las 239 preguntas del libro. La parte práctica, gratis: javivela.dev/libros/kubernet…
16
Un rollout lleva ocho minutos sin avanzar. Ni un Pod en error. Ni un evento. web · 3/3 listos · 3 disponibles · solo 1 actualizado El Deployment no está roto. Está esperando permiso. ¿De quién? #kubernetes #k8s
0%Del PDB
0%De un webhook
0%De maxUnavailable
100%Del kubelet
3 votes • Final results
91
1/ El 9 de julio de 2025 creé un Google Doc. Catorce meses después era un libro de 365 páginas a la venta en Amazon. Estos son los números que casi nadie publica. #kubernetes #k8s
1
1
2
151
5/ Primera semana: 58 ejemplares y unos 500 € en regalías. El 64 % en papel. 88 % España, 11 % EE. UU., 1 % México. En costes directos, producirlo salió por unos 340 €: los cubrió en seis días.
1
20
6/ Todos los números —costes, horas, revisores, qué haría distinto— en el post completo: javivela.dev/ir/substack/?de…
1
18