Saltar al contenido

Kubernetes: ¿cómo verificar el dominio actual establecido por –cluster-domain from pod?

Este dilema se puede resolver de diversas formas, por lo tanto te mostramos la que en nuestra opinión es la solución más completa.

Solución:

Debe configurarse en el servidor DNS.

Ya sea kube-dns o coredns (preferido en las versiones más nuevas de K8)

kube-dns: es una opción cli --domain

core-dns: puede configurar el K8s ConfigMap

Y ves aquí:

El kubelet pasa DNS a cada contenedor con el indicador –cluster-dns=.

Si desea saber cómo se resuelve un pod cluster.local lo hace a través de la /etc/resolv.conf que el kubelet se monta en cada pod. El contenido es algo como esto:

$ cat /etc/resolv.conf
nameserver 10.96.0.10
search .svc.cluster.local svc.cluster.local cluster.local 
options ndots:5

10.96.0.10 es tuyo coredns o kube-dns dirección IP del clúster.

Ejecutar una consulta de DNS contra el servicio kubernetes.predeterminado es una posible solución. Aquí hay un ejemplo de una sola línea en shell:

kubectl run -it --image=ubuntu --restart=Never shell -- 
sh -c 'apt-get update > /dev/null && apt-get install -y dnsutils > /dev/null && 
nslookup kubernetes.default | grep Name | sed "s/Name:skubernetes.default//"'

Esto devolverá como última línea:

.svc.cluster.local

Sin embargo, creo que sería más robusto implementar este algoritmo en un lenguaje de programación como go que tiene un buen cliente DNS implementado en neto biblioteca, aquí hay un ejemplo que puede ejecutar en un pod:

package main

import (
    "fmt"
    "net"
    "strings"
)

// GetClusterDomain returns Kubernetes cluster domain, default to "cluster.local"
func getClusterDomain() string 
    apiSvc := "kubernetes.default.svc"

    cname, err := net.LookupCNAME(apiSvc)
    if err != nil 
        defaultClusterDomain := "cluster.local"
        return defaultClusterDomain
    

    clusterDomain = strings.TrimPrefix(cname, apiSvc)
    clusterDomain = strings.TrimSuffix(clusterDomain, ".")

    return clusterDomain


func main() 
    fmt.Println(getClusterDomain())

Sección de Reseñas y Valoraciones

Si te mola el asunto, tienes la habilidad dejar una reseña acerca de qué te ha impresionado de esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 3 Promedio: 4.7)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *