es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

VM de bind9 como DNS externo para los pods de k8s

Tengo un sistema que está compuesto por tres componentes principales: un cluster k8s, una máquina virtual bind9 “servidor de DNS interno” y un replicaSet de mongoDB (cada máquina mongo es una máquina virtual). Todo está en GCP.

El cluster k8s está en una red (llamémosla net1) y las máquinas bind9 y mongoVMs están en una red diferente (net2).

He configurado correctamente bind9 para que funcione como el DNS de todas las máquinas virtuales en ambas redes, sin embargo, cuando intento enviar kube-dns para que use la IP externa de bind9 como stubdomain para mi dominio somedomain.com, la resolución de DNS falla dentro de los pods. [específicamente, hacer ping a foo.somedomain.com produce un error de “host desconocido”].

He hecho lo siguiente:
1. agregué la IP externa del cluster a la línea allow-query de bind9.
2. configuré las reglas de firewall adecuadas. La comunicación a través del puerto 53 está permitida entre los pods del cluster y la máquina virtual bind9.
3. mi configMap tiene lo siguiente:
stubDomains
{ “somedomain.com”: [“IP externa para la máquina virtual bind9”], “internal”: [ “169.254.169.254” ] }

Cuando ejecuto esto, la resolución de DNS falla. Pero si cambio a una máquina virtual bind9 que está dentro de net1 y usa su IP interna, esto funciona.

Esto no es un problema de comunicación/permisos. La ruta de seguimiento a través del puerto 53 funciona.

¿Por favor, algún consejo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con la configuración de stubDomain en el configMap de kube-dns. Aquí hay algunas cosas que podrías intentar:

    1. Asegúrate de que la IP externa de tu máquina virtual bind9 sea accesible desde los pods en el clúster k8s. Puedes probar esto ejecutando un pod de busybox en el clúster y luego realizando una búsqueda DNS utilizando la IP externa de la máquina virtual bind9. Si la búsqueda falla, entonces podría haber un problema de red que deba solucionarse.
    2. Verifica nuevamente que la sintaxis de tu configuración de stubDomain sea correcta. Según la documentación de Kubernetes, la sintaxis debería ser:

    stubDomains:
      "<dominio>": ["<dirección ip="">"]
    

    Entonces, en tu caso, debería ser:

    stubDomains:
      "somedomain.com": ["<ip externa="" de="" la="" máquina="" virtual="" bind9="">"]
      "internal": ["169.254.169.254"]
    
    1. Verifica los registros de bind9 en la máquina virtual para ver si hay algún error o advertencia relacionados con las solicitudes DNS provenientes del clúster k8s. Esto podría darte algunas pistas sobre qué está saliendo mal.

    2. Si ninguno de los pasos anteriores funciona, podrías intentar configurar un punto final kube-dns en el clúster k8s que apunte a la IP interna de la máquina virtual bind9. Esto eliminaría la necesidad de la configuración de stubDomain por completo. Puedes hacer esto siguiendo las instrucciones en la documentación de Kubernetes: https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#creating-a-pod-that-runs-a-nameserver</dirección>

Comments are closed.