Skip to main content

Solución de problemas

image.png

Pod Temporal

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

Si el pod no puede resolver DNS:

Verifica el DNS del clúster:

kubectl get pods -n kube-system -l k8s-app=kube-dns
Prueba con un DNS público (ej: Google DNS):
kubectl exec -it network-tester -- sh -c "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"

Eliminar el pod después de usar:

kubectl delete pod network-tester

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.