Solución de problemas

Pod temporalTemporal
Con herramientas básicas (Alpine Linux)
kubectl run -it --rm network-tester \
--image=alpine/curl \
--restart=Never \
-- sh
Una vez dentro del pod, ejecuta pruebas:
# Instala herramientas (ping, dig, etc.)
apk add --no-cache bind-tools iputils
# Prueba DNS
nslookup google.com
dig google.com
# Prueba conectividad HTTP
curl -v https://google.com
# Prueba ping (si el clúster lo permite)
ping google.com
# Prueba puertos TCP (ejemplo: HTTP)
nc -zv google.com 80
Con todas las herramientas preinstaladas (Debian)
apiVersion: v1
kind: Pod
metadata:
name: network-tester
spec:
containers:
- name: network-tester
image: debian:latest
command: ["sleep", "3600"] # Mantiene el pod activo 1 hora
resources:
requests:
cpu: "100m"
memory: "100Mi"
Aplica y accede al pod:
kubectl apply -f network-tester.yaml
kubectl exec -it network-tester -- bash
Dentro del pod, instala herramientas y ejecuta pruebas:
# Instala utilidades
apt update && apt install -y \
dnsutils \ # dig, nslookup
iputils-ping \ # ping
curl \
netcat-openbsd # nc
# Pruebas
ping google.com
dig google.com
curl -I https://google.com
nc -zv google.com 443
Cluster desplegado con imagenes cloud-init
Cuando desplegamos imagenes cloud de linux hay dos ficheros que los gestiona "cloud-init", los regenera tras cada reinicio y pueden afectar al funcionamiento de un clúster de kubernetes:
Fichero '/etc/resolv.conf'
El kubelet está usando el archivo /run/systemd/resolve/resolv.conf (generado por systemd-resolved) como plantilla para configurar el DNS en los pods, y ese archivo incluye ictiberia.com en el campo search.
La línea resolvConf: /run/systemd/resolve/resolv.conf en el kubelet apunta a un archivo local del nodo (generado por systemd-resolved en ese nodo). Si ese archivo contiene ictiberia.com, afectará a los pods del nodo.