Ir al contenido principal

Interacciones de la Red en un Clúster Base de Kubernetes. Bloque 3. Tema 3.1 del CKA.

 


En una instalación estándar de Kubernetes, todos los pods y nodos de la red pueden comunicarse directamente entre sí. Esto es esencial para que las aplicaciones que se ejecutan en diferentes pods puedan interactuar sin problemas. Sin embargo, para controlar esta comunicación, Kubernetes ofrece Network Policies, que permiten definir reglas sobre qué pods pueden enviar y recibir tráfico, mejorando así la seguridad de las aplicaciones.

Network Policies: Controlando la Comunicación

Las Network Policies son recursos que te permiten definir reglas de acceso entre los pods. Por defecto, todos los pods pueden comunicarse entre sí, lo cual puede no ser ideal desde un punto de vista de seguridad. Las Network Policies permiten restringir tanto el tráfico de entrada (ingress) como de salida (egress), usando etiquetas, namespaces y direcciones IP. Esto es clave para asegurar que solo los pods que deben comunicarse lo hagan.

Servicios y Networking en Kubernetes

En Kubernetes, los servicios actúan como un punto de contacto para acceder a un grupo de pods. Existen varios tipos de servicios, cada uno con un propósito específico:

  1. ClusterIP: Es el servicio predeterminado en Kubernetes. Crea una IP interna accesible solo dentro del clúster, lo cual es útil para que los pods se comuniquen entre sí de manera interna.

  2. NodePort: Expone un servicio en un puerto específico de cada nodo, permitiendo el acceso desde fuera del clúster a través de la IP de cualquier nodo y el puerto asignado. Es ideal para entornos de desarrollo.

  3. LoadBalancer: Utilizado principalmente en entornos de nube (como AWS o GCP), crea un balanceador de carga externo que distribuye el tráfico entrante entre los pods del clúster. Es útil para exponer aplicaciones a gran escala.

  4. ExternalName: Mapea un nombre interno a un nombre DNS externo. Esto es útil cuando deseas redirigir el tráfico a servicios que no están dentro del clúster.

Controladores de Ingress y Recursos Ingress

El Ingress es un recurso que te permite gestionar el acceso a los servicios dentro del clúster mediante reglas de enrutamiento. Esto simplifica la exposición de aplicaciones web al exterior, permitiendo el uso de un único punto de entrada para gestionar el tráfico HTTP y HTTPS.

  • Controlador de Ingress: Es necesario para que Kubernetes pueda interpretar los recursos de tipo Ingress. Algunos de los controladores más comunes son NGINX Ingress Controller y Traefik, que permiten definir reglas de cómo el tráfico debe ser dirigido a los servicios internos.

CoreDNS: Resolución de Nombres

CoreDNS es el servidor DNS de Kubernetes, encargado de resolver los nombres de los servicios y pods dentro del clúster. Esto permite que los pods puedan encontrarse entre sí usando nombres en lugar de IPs, lo que facilita la escalabilidad y la flexibilidad en la configuración.

  • Configuración y Personalización: Puedes personalizar CoreDNS para añadir zonas DNS adicionales, ajustar el tiempo de cacheo y definir redirecciones, adaptando su comportamiento a las necesidades específicas del clúster.

Elección de un Plugin CNI

La elección del plugin de red CNI es importante para asegurar que la red del clúster funcione de acuerdo a las necesidades del entorno. Algunos plugins populares son:

  • Calico: Ideal para entornos donde la seguridad es prioritaria, ya que permite definir políticas de red avanzadas.
  • Flannel: Fácil de configurar y perfecto para entornos de desarrollo donde la simplicidad es clave.
  • Weave Net: Ofrece flexibilidad y es fácil de usar, siendo útil para despliegues híbridos y clústeres de mayor escala.

Consideraciones y Mejores Prácticas

  • Redundancia y Alta Disponibilidad: Es fundamental tener varios nodos en el clúster para mantener la disponibilidad en caso de que uno falle. Las políticas de red adecuadas aseguran que se mantenga la seguridad sin comprometer la disponibilidad.
  • Monitorización de la Red: Herramientas como Prometheus y Grafana son útiles para monitorear el tráfico de red, identificar problemas y asegurar que los servicios estén funcionando correctamente.
  • Pruebas de Conectividad: Siempre prueba las políticas de red después de aplicarlas usando comandos como kubectl exec y curl para asegurarte de que el acceso está configurado como esperas.

Ejemplos Prácticos

Ejemplo de Servicio ClusterIP

Este manifiesto define un servicio ClusterIP que expone un grupo de pods de la aplicación my-app internamente en el clúster:

apiVersion: v1 kind: Service metadata: name: my-app-service namespace: default spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080

Explicación: Este servicio es accesible solo dentro del clúster, redirigiendo el tráfico que recibe en el puerto 80 al puerto 8080 de los pods.


Ejemplo de Servicio NodePort

Este manifiesto expone un servicio en un puerto específico accesible desde fuera del clúster:

apiVersion: v1 kind: Service metadata: name: my-app-nodeport-service spec: type: NodePort selector: app: my-app ports: - port: 80 targetPort: 8080 nodePort: 30007

Explicación: Permite acceder al servicio a través del puerto 30007 en la IP de cualquier nodo del clúster, redirigiendo el tráfico al puerto 8080 de los pods.


Ejemplo de Recurso Ingress

Un manifiesto para exponer un servicio HTTP:

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-app-service port: number: 80

Explicación: Este Ingress expone el servicio my-app-service a través de la URL http://myapp.example.com, permitiendo que las solicitudes se dirijan a los pods correspondientes.


Conclusión

Entender cómo interactúa la red en Kubernetes es fundamental para asegurar una administración efectiva del clúster. Con el conocimiento de Network Policies, Servicios e Ingress, estarás mejor preparado para configurar y gestionar la red de Kubernetes de forma segura y eficiente. ¡No te pierdas los próximos artículos donde profundizaremos en la configuración avanzada de estas herramientas!

Comentarios

Entradas populares de este blog

Autenticación y Autorización (Kubernetes).

La autenticación en Kubernetes es un aspecto crítico para la seguridad y control de acceso dentro de un clúster. Kubernetes proporciona varios mecanismos de autenticación para usuarios y cuentas de servicio, que deben pasar a través del API Server para realizar cualquier operación. En este artículo, revisaremos cómo funciona la autenticación y cómo puedes usar herramientas como kubectl y curl para interactuar de manera segura con el clúster. En primer lugar, ¿Qué es la autenticación y la autorización? •     Autenticación:  Es el proceso de verificar quién es un usuario. Responde a la pregunta "¿Quién eres?". •     Autorización: El proceso de determinar qué acciones puede realizar un usuario autenticado. Responde a la pregunta "¿Qué puedes hacer?". Primer paso: Autenticación. La autenticación en Kubernetes es el proceso mediante el cual el sistema verifica la identidad de los usuarios y cuentas de servicio que intentan acceder al clúster.  ...

Tip 1. Exámen CKA. Economiza y optimiza tu tiempo; Usa --help con el paginador Less en la ayuda.

📘 Domina los comandos --help y el uso de less en el examen CKA Durante el examen CKA (Certified Kubernetes Administrator) , uno de los recursos más potentes y completamente permitidos es el uso del --help en los comandos de Kubernetes. Además, puedes combinarlo con el paginador less para buscar y navegar fácilmente entre opciones. ✅ ¿Está permitido usar --help ? Sí, está 100% permitido . Puedes usar el --help de cualquier comando disponible en el entorno del examen: kubectl --help kubeadm init --help kubelet --help kubectl explain pod.spec.containers Estos comandos muestran la ayuda y las opciones disponibles directamente desde el sistema, sin necesidad de ir a la documentación. 🔍 ¿Cómo usar less para buscar rápidamente? Cuando la salida del comando es larga, puedes usar | less para verla de forma paginada y navegar más cómodamente. kubeadm init --help | less Una vez dentro de less , puedes buscar cualquier texto escribiendo /texto . Por ejemplo: /pod-networ...

TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...