En este módulo, exploraremos cómo Kubernetes maneja la red dentro de un clúster. La red de clúster es fundamental para la comunicación entre los diferentes componentes y servicios que se ejecutan en Kubernetes. A continuación, desglosaremos los conceptos clave, ejemplos prácticos y ejercicios para ayudarte a comprender y manejar las redes en Kubernetes.
Conceptos Clave
-
Modelo de Red de Kubernetes:
- Cada Pod en un clúster tiene una dirección IP única.
- Los Pods pueden comunicarse entre sí sin necesidad de NAT.
- Los nodos pueden comunicarse con todos los Pods sin necesidad de NAT.
- Las aplicaciones dentro de los Pods pueden comunicarse con otros Pods utilizando sus direcciones IP.
-
Componentes de Red:
- CNI (Container Network Interface): Especifica cómo los contenedores se conectan a la red.
- Kube-proxy: Mantiene las reglas de red en los nodos y permite la comunicación de red para los servicios de Kubernetes.
-
Plugins de Red:
- Flannel: Proporciona una red de superposición simple.
- Calico: Ofrece redes de contenedores y políticas de red.
- Weave: Facilita la creación de redes de contenedores con características avanzadas.
Ejemplo Práctico: Configuración de Flannel
Paso 1: Instalar Flannel
Primero, asegúrate de que tu clúster de Kubernetes esté configurado. Luego, aplica el manifiesto de Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Paso 2: Verificar la Instalación
Verifica que los Pods de Flannel estén en ejecución:
Deberías ver algo similar a:
Paso 3: Probar la Conectividad
Crea dos Pods y verifica que pueden comunicarse entre sí:
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'sleep 3600'] --- apiVersion: v1 kind: Pod metadata: name: pod2 spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'sleep 3600']
Aplica el manifiesto:
Verifica la conectividad:
Deberías ver una respuesta de pod2
, confirmando que la red está funcionando.
Ejercicio Práctico
Ejercicio 1: Configuración de Calico
-
Instalar Calico:
- Aplica el manifiesto de Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
-
Verificar la Instalación:
- Asegúrate de que los Pods de Calico estén en ejecución:
kubectl get pods -n kube-system -l k8s-app=calico-node
-
Probar la Conectividad:
- Crea dos Pods y verifica que pueden comunicarse entre sí, similar al ejemplo de Flannel.
Solución
-
Instalar Calico:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
-
Verificar la Instalación:
kubectl get pods -n kube-system -l k8s-app=calico-node
Deberías ver algo similar a:
NAME READY STATUS RESTARTS AGE calico-node-xxxxx 1/1 Running 0 2m
-
Probar la Conectividad:
Crea dos Pods y verifica la conectividad:
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'sleep 3600'] --- apiVersion: v1 kind: Pod metadata: name: pod2 spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'sleep 3600']
Aplica el manifiesto:
kubectl apply -f pods.yaml
Verifica la conectividad:
kubectl exec pod1 -- ping -c 3 pod2
Deberías ver una respuesta de
pod2
, confirmando que la red está funcionando.
Resumen
En esta sección, hemos cubierto los conceptos básicos de la red de clúster en Kubernetes, incluyendo el modelo de red, los componentes y los plugins de red más comunes. También hemos proporcionado ejemplos prácticos y ejercicios para ayudarte a configurar y verificar la conectividad de red en tu clúster de Kubernetes. Con esta base, estarás preparado para explorar temas más avanzados de redes en Kubernetes.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster