Gracias por los comentarios

Este artículo ha sido traducido automáticamente. (Aviso legal)

Implementar de NetScaler CPX como cachés DNS locales para nodos de Kubernetes

Los pods de aplicaciones de un clúster de Kubernetes dependen del DNS para comunicarse con otros pods de aplicaciones. Las solicitudes de DNS de aplicaciones dentro de un clúster de Kubernetes se gestionan mediante DNS de Kubernetes (kube-dns). Debido a la adopción más amplia de arquitecturas de microservicios, las tasas de solicitudes de DNS dentro de un clúster de Kubernetes están aumentando. Como resultado, el DNS de Kubernetes (kube-dns) está sobrecargado. Ahora puede implementar NetScaler CPX como una memoria caché de DNS local en cada nodo de Kubernetes y reenviar solicitudes de DNS desde los pods de aplicaciones en el nodo a NetScaler CPX. Por lo tanto, puede resolver las solicitudes de DNS más rápido y reducir significativamente la carga en el DNS de Kubernetes.

Para implementar NetScaler CPX, se utiliza una entidad de Kubernetes DaemonSet para programar pods de NetScaler CPX en cada nodo del clúster de Kubernetes. Un DaemonSet de Kubernetes garantiza que haya una instancia de NetScaler CPX en cada nodo de Kubernetes del clúster. Para que los pods de aplicaciones dirijan el tráfico a los pods DNS de CPX, debe crear un servicio de Kubernetes con puntos finales como pods de NetScaler CPX. La IP de clúster de este servicio se usa como punto de enlace DNS para los pods de la aplicación. Para asegurarse de que los pods de la aplicación usen la dirección IP del clúster de servicios NetScaler CPX para la resolución de DNS, debe actualizar el archivo de configuración de kubelet en cada nodo con la IP del clúster de servicios NetScaler CPX.

Se introducen las siguientes variables de entorno para admitir la implementación de NetScaler CPX como caché DNS de NodeLocal:

  • KUBE_DNS_SVC_IP: Especifica la dirección IP del clúster del servicio kube-dns, que es un argumento obligatorio para desencadenar la configuración en un pod de NetScaler CPX. El pod de NetScaler CPX dirige las consultas DNS a esta dirección IP cuando la respuesta a la consulta DNS no está disponible en la memoria caché de NetScaler CPX.

  • CPX_DNS_SVC_IP: Especifica la dirección IP del clúster del servicio NetScaler CPX. La variable de entorno CPX_DNS_SVC_IP se usa para configurar el DNS local en los nodos. Al configurar esta variable, se agrega una regla iptables para dirigir las solicitudes DNS que se originan en los pods de aplicaciones al pod CPX local de NetScaler dentro del nodo.

  • NS_DNS_FORCE_TCP: Esta variable de entorno fuerza el uso de TCP para las solicitudes de DNS, incluso si las consultas se reciben a través de UDP.

  • NS_DNS_EXT_RESLV_IP: Especifica la dirección IP del servidor de nombres externo para dirigir las solicitudes de DNS para un dominio específico.

  • NS_DNS_MATCH_DOMAIN: Especifica la cadena de dominio externo que se va a comparar para dirigir las consultas al servidor de nombres externo.

Implementar de NetScaler CPX como cachés de DNS en nodos

La implementación de NetScaler CPX como caché de DNS local para un clúster de Kubernetes incluye las siguientes tareas:

En el nodo maestro:

  • Crear un servicio de Kubernetes con puntos finales como pods de NetScaler CPX

  • Crear un ConfigMap para definir variables de entorno para pods de NetScaler CPX

  • Programe pods de NetScaler CPX en cada nodo del clúster de Kubernetes mediante un DaemonSet de Kubernetes.

En los nodos trabajadores:

  • Modifique el archivo de configuración de kubelet con la dirección IP del clúster del servicio NetScaler CPX para reenviar las solicitudes DNS a NetScaler CPX.

Configuración en el nodo maestro de Kubernetes

Realice los siguientes pasos en el nodo principal de Kubernetes para implementar NetScaler CPX como la memoria caché DNS local para los nodos:

  1. Cree un servicio con pods de NetScaler CPX como puntos finales mediante el archivo cpx_dns_svc.yaml.

      kubectl apply -f cpx_dns_svc.yaml
    

    El archivo cpx_dns_svc.yaml se proporciona de la siguiente manera:

              apiVersion: v1
              kind: Service
              metadata:
                name: cpx-dns-svc
                labels:
                  app: cpxd
              spec:
                ports:
       
                -  protocol: UDP
                  port: 53
                  name: dns
       
                -  protocol: TCP
                  port: 53
                  name: dns-tcp
                selector:
                  app: cpx-daemon
    
  2. Obtenga la dirección IP del servicio NetScaler CPX.

      kubectl get svc cpx-dns-svc
    
  3. Obtenga la dirección IP del servicio DNS de Kube.

      kubectl get svc -n kube-system
    
  4. Cree un ConfigMap para definir variables de entorno para pods de NetScaler CPX. Estas variables de entorno se utilizan para pasar las direcciones IP del servicio NetScaler CPX y el servicio DNS de Kube. En este paso, cpx-dns-cache se crea un ejemplo de ConfigMap utilizando las variables de entorno especificadas como datos (pares clave-valor) en un archivo.

      kubectl create configmap cpx-dns-cache --from-file <path-to-file>
    

    A continuación se muestra un archivo de ejemplo con las variables de entorno como pares clave-valor.

        CPX_DNS_SVC_IP: 10.111.95.145
        EULA: "yes"
        KUBE_DNS_SVC_IP: 10.96.0.10
        NS_CPX_LITE: "1"
        NS_DNS_EXT_RESLV_IP: 10.102.217.142
        NS_DNS_MATCH_DOMAIN: citrix.com
        PLATFORM: CP1000
    

    A continuación se muestra un ejemplo de ConfigMap:

      apiVersion: v1
      data:
        CPX_DNS_SVC_IP: 10.111.95.145
        EULA: "yes"
        KUBE_DNS_SVC_IP: 10.96.0.10
        NS_CPX_LITE: "1"
        NS_DNS_EXT_RESLV_IP: 10.102.217.142
        NS_DNS_MATCH_DOMAIN: citrix.com
        PLATFORM: CP1000
      kind: ConfigMap
      metadata:
        creationTimestamp: "2019-10-15T07:45:54Z"
        name: cpx-dns-cache
        namespace: default
        resourceVersion: "8026537"
        selfLink: /api/v1/namespaces/default/configmaps/cpx-dns-cache
        uid: 8d06f6ee-133b-4e1a-913c-9963cbf4f48
    
  5. Cree un DaemonSet de Kubernetes para NetScaler CPX en el nodo principal.

      kubectl apply -f cpx_daemonset.yaml
    

    El archivo cpx_daemonset.yaml se proporciona de la siguiente manera:

      apiVersion: apps/v1
      kind: DaemonSet
      metadata:
        name: cpx-daemon
        labels:
              app: cpxd
      spec:
         selector:
              matchLabels:
                app: cpx-daemon
      template:
         metadata:
              labels:
                app: cpx-daemon
         spec:
             containers:
       
             -  name: cpxd
              imagePullPolicy: IfNotPresent
              image: localhost:5000/dev/cpx
              volumeMounts:
       
               -  mountPath: /netns/default/
              name: test-vol
              ports:
       
              -  containerPort: 53
         envFrom:
       
             -  configMapRef:
             name: cpx-dns-cache
         securityContext:
         privileged: true
         allowPrivilegeEscalation: true
         capabilities:
          add: ["NET_ADMIN"]
         volumes:
       
            -  name: test-vol
            hostPath:
            path: /proc/1/ns
            type: Directory
    

Configuración en nodos de trabajo en el clúster de Kubernetes

Una vez que haya completado la configuración en el nodo maestro, lleve a cabo el siguiente paso en los nodos de trabajo:

  1. Modifique el archivo de configuración de kubelet para que los pods de aplicaciones puedan usar la IP del clúster de servicios de NetScaler CPX para la resolución de DNS mediante uno de los siguientes pasos:

    • Siga los pasos en reconfigurar el kubelet de un nodo y modifique el valor del argumento --cluster-dns en el siguiente formato.

             --cluster-dns=<CPX_DNS_SVC_IP>,<KUBE_DNS_SVC_IP>
      

      o bien,

    • Modifique el archivo /etc/systemd/system/kubelet.service.d/10-kubeadm.conf y modifique el argumento --cluster-dns mediante los siguientes pasos.

      1. Modifique la configuración de kubelet y especifique la dirección IP del clúster del servicio y la dirección IP kube-dns del servicio NetScaler CPX para el argumento --cluster-dns.

           root@node:~# cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf | grep KUBELET\_DNS\_ARGS
                  
           Environment="KUBELET_DNS_ARGS=--cluster-dns=10.111.95.145,10.96.0.10 --cluster-domain=cluster.local"
           ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_DNS_ARGS
        
      2. Vuelva a cargar el kubelet de los nodos con los siguientes comandos:

           # systemctl daemon-reload
           # service kubelet restart
        
La versión oficial de este contenido está en inglés. Para mayor comodidad, parte del contenido de la documentación de Cloud Software Group solo tiene traducción automática. Cloud Software Group no puede controlar el contenido con traducción automática, que puede contener errores, imprecisiones o un lenguaje inadecuado. No se ofrece ninguna garantía, ni implícita ni explícita, en cuanto a la exactitud, la fiabilidad, la idoneidad o la precisión de las traducciones realizadas del original en inglés a cualquier otro idioma, o que su producto o servicio de Cloud Software Group se ajusten a cualquier contenido con traducción automática, y cualquier garantía provista bajo el contrato de licencia del usuario final o las condiciones de servicio, o cualquier otro contrato con Cloud Software Group, de que el producto o el servicio se ajusten a la documentación no se aplicará en cuanto dicha documentación se ha traducido automáticamente. Cloud Software Group no se hace responsable de los daños o los problemas que puedan surgir del uso del contenido traducido automáticamente.
ESTE SERVICIO PUEDE CONTENER TRADUCCIONES CON TECNOLOGÍA DE GOOGLE. GOOGLE RENUNCIA A TODAS LAS GARANTÍAS RELACIONADAS CON LAS TRADUCCIONES, TANTO IMPLÍCITAS COMO EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS DE EXACTITUD, FIABILIDAD Y OTRAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN EN PARTICULAR Y AUSENCIA DE INFRACCIÓN DE DERECHOS.
Implementar de NetScaler CPX como cachés DNS locales para nodos de Kubernetes