[Serie K8S] Análisis en profundidad del complemento de red k8s: kube-router

Prefacio

No es difícil hacer algo, la dificultad está en la perseverancia. No es difícil persistir un tiempo, pero lo difícil es persistir hasta el final.

Descripción del color de la etiqueta del artículo:

  • Amarillo : títulos importantes
  • Rojo : utilizado para marcar conclusiones.
  • Verde : usado para marcar argumentos.
  • Azul : usado para marcar argumentos.

En el mundo de las aplicaciones en contenedores modernas, la plataforma de orquestación de contenedores Kubernetes se ha convertido en el estándar. Kubernetes es un sistema distribuido. Para admitir aplicaciones complejas y arquitectura de microservicios, la red es una parte integral del clúster de Kubernetes.

Capaz de administrar y orquestar aplicaciones en contenedores, donde el monitoreo es un aspecto muy importante para ayudar a los usuarios a comprender el estado, el rendimiento y la disponibilidad del clúster.

En este artículo, se presentará en detalle el complemento [kube-router] en el complemento de red de Kubernetes.

Espero que este artículo no solo te haga ganar algo, sino que también te haga aprender felizmente, si tienes alguna sugerencia puedes dejar un mensaje para comunicarte conmigo.

 Introducción a la columna

Esta es la columna donde se encuentra este artículo, bienvenido a suscribirse: columna [Análisis en profundidad de k8s]

Presentemos brevemente lo que hará esta columna:

1 Introducción básica 

En Kubernetes, el complemento de red también se denomina complemento de interfaz de red de contenedores (CNI), que se utiliza para implementar conexiones de red y comunicación entre contenedores. A continuación se muestran algunos complementos de red de Kubernetes comunes:

  1. Franela : franela es un complemento CNI popular que utiliza tecnología de superposición de red virtual (red superpuesta) para conectar contenedores en diferentes nodos. franela admite una variedad de controladores de back-end, como VXLAN, UDP, Host-GW, etc.

  2. Calico : Calico es una solución de seguridad y redes de código abierto que utiliza el protocolo BGP para el enrutamiento entre contenedores. Calico admite políticas de red y reglas de seguridad flexibles y puede usarse para implementaciones a gran escala.

  3. Weave Net : Weave Net es un complemento CNI liviano que conecta contenedores en diferentes nodos mediante la creación de dispositivos de red virtuales y servidores proxy de red. Weave Net admite el modo de superposición y el modo de conexión directa, lo que brinda flexibilidad.

  4. Cilium : Cilium es una solución de seguridad y red de alto rendimiento para Kubernetes, que utiliza la tecnología eBPF (filtro de paquetes extendido de Berkeley) para proporcionar comunicación rápida entre contenedores y aplicación de políticas de red.

  5. Canal : Canal es un complemento CNI completo que combina las funciones de Calico y franela. Puede utilizar franela para proporcionar una red superpuesta, mientras utiliza la política de red y las funciones de seguridad de Calico.

  6. Antrea : Antrea es un complemento CNI basado en Open vSwitch diseñado para redes y seguridad de Kubernetes. Proporciona conectividad de red de alto rendimiento y capacidades de política de red.

  7. kube-router : kube-router es un complemento CNI de código abierto que combina la funcionalidad de proxy de servicio y de red. Admite los protocolos BGP e IPIP y tiene funciones de equilibrio de carga.

Estas son algunas opciones comunes entre los complementos de red de Kubernetes, cada una con sus propias ventajas específicas y escenarios aplicables. La elección del complemento de red adecuado depende de factores como sus necesidades, la topología de la red y los requisitos de rendimiento.

Al mismo tiempo, la comunidad de Kubernetes evoluciona constantemente y lanza nuevos complementos de red para satisfacer las necesidades cambiantes.

2 introducción al enrutador kube

kube-router es un complemento de red de Kubernetes de código abierto diseñado para proporcionar servicios de red de alto rendimiento y baja latencia. Utiliza enrutamiento de capa 3 para lograr la comunicación de red en el clúster de Kubernetes.

2.1 Conceptos básicos

Los conceptos centrales de kube-router incluyen:

  1. Enrutador BGP : kube-router utiliza BGP (Border Gateway Protocol) para implementar el enrutamiento, lo que significa que puede adaptarse dinámicamente a los cambios de nodos en el clúster. Cada nodo está configurado como un enrutador BGP y comparten información de red para garantizar que la comunicación entre contenedores pueda ocurrir de manera eficiente y confiable.

  2. Equilibrio de carga IPVS : kube-router utiliza IPVS (servidor virtual IP) para implementar el equilibrio de carga y garantizar que el tráfico se distribuya uniformemente entre los contenedores. Esto proporciona alto rendimiento y escalabilidad, especialmente para clústeres de Kubernetes a gran escala.

  3. Políticas de red : kube-router admite las políticas de red de Kubernetes, lo que permite a los administradores definir y controlar qué contenedores pueden comunicarse entre sí. Esto mejora la seguridad del clúster.

2.2 Enrutamiento de capa 3

kube-router utiliza enrutamiento de capa 3 para implementar la comunicación de red en el clúster de Kubernetes. Este método es diferente del modelo de red tradicional de dos capas (Capa 2) y tiene algunas ventajas y características únicas. La siguiente es una introducción detallada al método de enrutamiento de tres capas de kube-router:

  1. Enrutamiento de capa IP : la idea central de kube-router es enrutar a nivel de IP. En Kubernetes, a cada contenedor se le asigna una dirección IP única , lo que hace que el enrutamiento en la capa IP sea más intuitivo y eficiente . kube-router utiliza estas direcciones IP para implementar la comunicación y el control de flujo entre contenedores.

  2. Protocolo de enrutamiento BGP (Border Gateway Protocol) : kube-router utiliza BGP como protocolo de enrutamiento principal . BGP es un protocolo ampliamente utilizado para el enrutamiento de Internet y es altamente escalable y resistente. Cada nodo de Kubernetes está configurado como un enrutador BGP e intercambian información de enrutamiento a través del protocolo BGP. Esto significa que cuando un nuevo nodo se une al clúster o un nodo existente abandona el clúster, la información de enrutamiento se actualiza automáticamente, eliminando la necesidad de configurar manualmente la tabla de enrutamiento.

  3. Enrutamiento dinámico : debido a las características de BGP, kube-router implementa el enrutamiento dinámico. Esto significa que cuando se crean o eliminan nuevos contenedores, la tabla de enrutamiento se actualiza en consecuencia para reflejar la topología de red real en el clúster. Esta gestión de rutas automatizada facilita el mantenimiento y la escala de los clústeres de Kubernetes sin intervención manual.

  4. Alto rendimiento y equilibrio de carga : kube-router utiliza IPVS (servidor virtual IP) en el kernel de Linux para lograr el equilibrio de carga. IPVS es una tecnología de equilibrio de carga de alto rendimiento que puede distribuir eficazmente el tráfico entre múltiples contenedores, proporcionando así un alto rendimiento y un rendimiento de red de baja latencia. Esto es importante para manejar grandes volúmenes de tráfico de contenedores, especialmente en clústeres de Kubernetes a gran escala.

  5. Compatibilidad con políticas de red : kube-router también admite políticas de red de Kubernetes. Las políticas de red permiten a los administradores definir qué contenedores pueden comunicarse con qué otros contenedores y cómo se permite o deniega el tráfico. Esto proporciona seguridad adicional y control de tráfico detallado para satisfacer las necesidades de diferentes aplicaciones.

En resumen, el método de enrutamiento de tres capas de kube-router es un método flexible y de alto rendimiento para administrar la comunicación de red en clústeres de Kubernetes.

Utiliza enrutamiento de capa IP, protocolo BGP, enrutamiento dinámico y tecnologías de equilibrio de carga para proporcionar conexiones de red confiables para contenedores, y tiene buenas características de escalabilidad y automatización, lo que hace que sea más fácil y confiable administrar y mantener la red Kubernetes.

2.3 Ventajas y Desventajas

ventaja

  1. Alto rendimiento : kube-router adopta tecnologías de alto rendimiento como IPVS y BGP , por lo que tiene un rendimiento de red excelente y es adecuado para clústeres de Kubernetes a gran escala.

  2. Escalabilidad : debido al uso del protocolo de enrutamiento BGP , kube-router funciona bien en la expansión y contracción dinámica de nodos sin la necesidad de configurar manualmente la información de enrutamiento.

  3. Compatibilidad con políticas de red : kube-router admite la política de red de Kubernetes, lo que permite un control detallado del tráfico y mejora la seguridad.

  4. Soporte de la comunidad de código abierto : kube-router es un proyecto de código abierto con una comunidad activa que brinda soporte técnico y actualizaciones oportunas.

defecto

  1. Complejidad : la configuración e implementación de kube-router es relativamente compleja y requiere cierto conocimiento de la red de Kubernetes.

  2. Costo de mantenimiento : debido a su naturaleza altamente automatizada, kube-router requiere un mantenimiento profesional para garantizar un funcionamiento sin problemas.

2.4 Escenarios de uso

kube-router es adecuado para clústeres de Kubernetes que requieren alto rendimiento y escalabilidad, especialmente aquellos que ejecutan entornos de producción con una gran cantidad de contenedores. Los siguientes son algunos escenarios aplicables:

  1. Clústeres a gran escala : para clústeres de Kubernetes de gran tamaño, las funciones de rendimiento y automatización de kube-router son muy útiles para gestionar la comunicación de red de una gran cantidad de contenedores.

  2. Implementación de múltiples nubes y entre centros de datos : kube-router admite la implementación de múltiples nubes y entre centros de datos, lo que simplifica la comunicación entre los clústeres de Kubernetes en múltiples ubicaciones geográficas.

  3. Entornos sensibles a la seguridad : debido a que admite las políticas de red de Kubernetes, kube-router es adecuado para entornos que necesitan fortalecer la seguridad de la red y puede controlar con precisión el tráfico a través de políticas de red.

3 pasos de instalación

La instalación de kube-router requiere ciertos conocimientos del clúster de Kubernetes. Los siguientes son breves pasos de instalación:

  1. Crear un clúster de Kubernetes

  2. Instalar el enrutador kube

  3. Configurar el enrutador BGP

  4. Habilitar política de red

  5. Verificar la instalación

Paso 1: crear un clúster de Kubernetes

Existen diferentes métodos que puede elegir para crear un clúster de Kubernetes; aquí hay un ejemplo usando kubeadm:

  1. Instale las herramientas kubeadm, kubelet y kubectl, así como Docker (u otro tiempo de ejecución de contenedor).

  2. Inicialice el nodo del plano de control de Kubernetes (nodo maestro):

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

 Instale el complemento de red; aquí se utilizará kube-router. Pero en este paso, solo necesita instalar kubeadm y kubelet, y no se requieren complementos de red específicos.

Paso 2: Instale el enrutador kube

A continuación, debe instalar kube-router en su clúster de Kubernetes. Normalmente, puedes hacer esto usando un Helm Chart o un archivo de manifiesto YAML. El siguiente es un ejemplo del uso de un archivo de manifiesto YAML:

 1 Obtenga el archivo de manifiesto más reciente del repositorio de GitHub de kube-router:

git clone https://github.com/cloudnativelabs/kube-router.git
cd kube-router

2 Implemente kube-router en el clúster:

kubectl apply -f kube-router-all-in-one.yaml

Esto creará Pods de kube-router y servicios relacionados.

Paso 3: configurar el enrutador BGP

kube-router utiliza el protocolo de enrutamiento BGP para la gestión de enrutamiento de forma predeterminada. Debe configurar la información relevante del enrutador BGP, incluido el número AS, etc. Esta información de configuración generalmente se incluye en un archivo de manifiesto YAML para que la utilice kube-router.

Puede editar el ConfigMap de kube-router y agregarle la información de configuración del enrutador BGP. Por ejemplo, abra un archivo ConfigMap:

kubectl edit configmap kube-router-config -n kube-system

Luego, agregue o modifique la información de configuración de BGP de la siguiente manera:

apiVersion: v1
data:
  kubeconfig: |
    <kubeconfig-data>
  bgpConfig: |
    <bgp-config-data>

Paso 4: Habilite la política de red (opcional)

Si necesita habilitar la política de red de Kubernetes, puede crear un objeto de política de red. He aquí un ejemplo sencillo:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-internal-traffic
spec:
  podSelector:
    matchLabels:
      role: internal
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: internal

Utilice kubectl applyobjetos de política de red para aplicarlos al clúster.

Paso 5: verificar la instalación

Finalmente, use el siguiente comando para verificar que la instalación de kube-router se haya realizado correctamente y asegúrese de que se esté ejecutando correctamente:

kubectl get pods -n kube-system

Debería poder ver que los pods de kube-router se están ejecutando. Si todo salió bien, kube-router se ha integrado con éxito en el clúster de Kubernetes y es responsable del enrutamiento y la comunicación de la red.

4 Expandir

¿Qué es BGP?

Border Gateway Protocol (BGP), traducido al chino como Border Gateway Protocol , es un protocolo de enrutamiento ampliamente utilizado en Internet.

BGP es un protocolo de vector de ruta, que se utiliza principalmente para intercambiar información de enrutamiento entre diferentes sistemas autónomos (AS, sistemas autónomos) para determinar cómo se deben transmitir los paquetes de datos a través de Internet. La siguiente es una introducción detallada al protocolo de enrutamiento BGP:

1. Sistema Autónomo (AS) :

  • Un sistema autónomo es un conjunto de redes, enrutadores y direcciones IP que se tratan como una única unidad administrativa. Los enrutadores dentro de un AS usan protocolos internos para decidir cómo enrutar el tráfico interno, mientras que BGP se usa principalmente para enrutar decisiones entre AS.

2. Enrutador BGP :

  • Un enrutador BGP es un dispositivo de red configurado con el protocolo BGP y se utiliza para intercambiar información de enrutamiento y determinar la mejor ruta. Normalmente, los grandes proveedores de servicios de Internet y las grandes redes empresariales ejecutan enrutadores BGP.

3. Intercambio de información de enrutamiento :

  • La información de enrutamiento se intercambia entre enrutadores BGP a través de conexiones TCP. Los enrutadores BGP envían periódicamente información de actualización de enrutamiento a los enrutadores vecinos, incluidos prefijos de IP accesibles y atributos relacionados.

4. Selección de ruta BGP :

  • BGP utiliza un complejo algoritmo de selección de ruta para determinar la mejor ruta para los paquetes. Tiene en cuenta una variedad de factores, incluida la longitud de la ruta AS, los atributos del prefijo (como la longitud del prefijo, AS-PATH, NEXT-HOP, etc.), así como diversas políticas, condiciones de filtrado, etc.

5. Atributos BGP :

  • Cada ruta en la tabla de enrutamiento BGP va acompañada de un conjunto de atributos que describen las características de la ruta. Los atributos BGP comunes incluyen:

    • AS-PATH: Describe la ruta del paquete de datos desde el AS de origen al AS de destino.
    • NEXT-HOP: Indica la dirección IP del siguiente salto del paquete de datos.
    • Longitud del prefijo: especifica la longitud de la máscara de subred del prefijo accesible.
    • LOCAL-PREF: se utiliza para seleccionar la mejor ruta dentro del AS.
    • MED (Discriminador de salidas múltiples): se utiliza para seleccionar caminos entre diferentes rutas de salida de un mismo AS.

6. Política BGP :

  • BGP permite a los administradores de red definir varias políticas para controlar la difusión y selección de información de enrutamiento. Estas políticas se pueden utilizar para filtrado de rutas, agregación de rutas, redistribución de rutas y otras operaciones para satisfacer las necesidades específicas de la red.

7. Propósito de BGP :

  • BGP se utiliza principalmente para conectar diferentes sistemas autónomos, por lo que juega un papel clave en Internet. Permite que diferentes proveedores de red trabajen juntos para garantizar la accesibilidad y estabilidad global de Internet.

8. Seguridad BGP :

  • Debido a la naturaleza abierta del protocolo BGP, es vulnerable a diferentes tipos de ataques, como el secuestro de rutas y la suplantación de rutas. Para mejorar la seguridad de BGP, la comunidad de la red está promoviendo activamente la mejora de BGP y mecanismos de seguridad mejorados, como BGPsec (Seguridad BGP).

En resumen, BGP es uno de los protocolos de enrutamiento más importantes de Internet y se utiliza para implementar el intercambio de enrutamiento y la selección de rutas entre diferentes sistemas autónomos.

Su complejidad y flexibilidad lo convierten en la columna vertebral de Internet y requiere administradores de red experimentados para su configuración y mantenimiento.

La estabilidad y confiabilidad de BGP son cruciales para el funcionamiento normal de Internet, por lo que su seguridad también ha recibido mucha atención y mejoras.

5. Conclusión

kube-router es un complemento de red de Kubernetes escalable y de alto rendimiento adecuado para entornos de producción a gran escala y sensibles a la seguridad.

Aunque puede tener cierta complejidad de configuración e implementación, proporciona excelentes características de rendimiento y automatización que pueden simplificar enormemente la gestión de red de los clústeres de Kubernetes.

Al elegir un complemento de red, teniendo en cuenta el tamaño del clúster y los requisitos de rendimiento, kube-router puede ser una muy buena opción.

Supongo que te gusta

Origin blog.csdn.net/weixin_36755535/article/details/133679208
Recomendado
Clasificación