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

  1. 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.
  2. 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.
  3. 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:

kubectl get pods -n kube-system -l app=flannel

Deberías ver algo similar a:

NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-amd64   1/1     Running   0          2m

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:

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.

Ejercicio Práctico

Ejercicio 1: Configuración de Calico

  1. Instalar Calico:

    • Aplica el manifiesto de Calico:
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  2. 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
    
  3. Probar la Conectividad:

    • Crea dos Pods y verifica que pueden comunicarse entre sí, similar al ejemplo de Flannel.

Solución

  1. Instalar Calico:

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  2. 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
    
  3. 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

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

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados