Exploración y práctica del plugin de red Calico
Este artículo explora en profundidad la configuración y la práctica del plugin de red Calico en clústeres de Kubernetes, analizando métodos comunes de solución de problemas y estrategias de optimización de red.
Categories:
Exploración y práctica del plugin de red Calico
Visión general
Calico es un plugin de interfaz de red de contenedor (CNI) ampliamente utilizado en el ecosistema de Kubernetes, que ofrece conectividad de red de alto rendimiento y una gestión flexible de políticas de red. Basado en la práctica en entornos de producción, este artículo analiza en profundidad las funciones principales y los puntos clave de configuración de Calico.
Arquitectura de funcionalidades clave
Calico adopta un modelo de enrutamiento de capa 3 para implementar la comunicación entre contenedores. Los componentes principales incluyen:
- Felix: Demonio que se ejecuta en cada nodo, responsable de la configuración de enrutamiento y las reglas ACL.
- BIRD: Componente de distribución de enrutamiento, implementa el intercambio de información de enrutamiento entre nodos.
- confd: Herramienta de generación de configuración dinámica.
- Plugin CNI: Se integra con el modelo de red de Kubernetes.
Gestión de configuración y práctica
Configuración del grupo de direcciones IP
Principios de arquitectura de red
graph TD
subgraph Clúster de Kubernetes
node1[Node1] -->|Enrutamiento BGP| node2[Node2]
node1 -->|Túnel VXLAN| node3[Node3]
node2 -->|Túnel IPIP| node3
end
node1 --> pod1[Pod]
node2 --> pod2[Pod]
node3 --> pod3[Pod][root@k8s-03:~/.kube 20:41 $]k get ippools.crd.projectcalico.org -o yaml
apiVersion: v1
items:
- apiVersion: crd.projectcalico.org/v1
kind: IPPool
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"crd.projectcalico.org/v1","kind":"IPPool","metadata":{"annotations":{},"generation":1,"name":"default-ipv4-ippool"},"spec":{"allowedUses":["Workload","Tunnel"],"blockSize":26,"cidr":"192.168.0.0/16","ipipMode":"Never","natOutgoing":true,"nodeSelector":"all()","vxlanMode":"Always"}}
projectcalico.org/metadata: '{"uid":"0891de51-013e-4a44-9cb6-0c142f480567","creationTimestamp":"2023-05-26T07:36:30Z"}'
creationTimestamp: "2023-05-26T07:36:30Z"
generation: 3
name: default-ipv4-ippool
resourceVersion: "37479"
uid: de7868c1-ad93-4441-aa22-9198d07822f5
spec:
allowedUses:
- Workload
- Tunnel
blockSize: 26
cidr: 192.168.0.0/16
ipipMode: Never
natOutgoing: true
nodeSelector: all()
vxlanMode: Always
kind: List
metadata:
resourceVersion: ""
[root@k8s-03:~/.kube 20:41 $]k edit ippools.crd.projectcalico.org default-ipv4-ippool
Consideraciones para la modificación de la configuración
- Después de modificar el IPPool, es necesario reiniciar el componente calico-node para que la configuración surta efecto.
- El cambio de CIDR puede provocar una interrupción de la red de los Pods existentes; operar con precaución.
- La selección del modo VXLAN/IPIP debe considerar el rendimiento de la red y la compatibilidad.
Pasos de configuración detallados
Modificar la configuración de IPPool
- Obtener la configuración actual:
kubectl get ippools.crd.projectcalico.org -o yaml - Editar la configuración:
kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool - Descripción de los parámetros principales:
cidr: Rango CIDR de la red de Pods.vxlanMode: Always habilita VXLAN.ipipMode: Never deshabilita IPIP.natOutgoing: true habilita NAT de salida.
Solución de problemas comunes
Fallo de comunicación entre nodos
flowchart TD
A[No hay conexión de red entre nodos] --> B{Comprobar modo}
B -->|VXLAN| C[Verificar puerto UDP 4789]
B -->|IPIP| D[Verificar número de protocolo 4]
C --> E[Configuración de firewall]
D --> E
E --> F[Problema resuelto]Comandos de verificación de configuración
# Comprobar el estado del nodo de Calico
calicoctl node status
# Ver la tabla de enrutamiento
ip route show
Sugerencias de optimización del rendimiento
- Utilizar BGP en lugar de VXLAN en clústeres grandes.
- Habilitar el plano de datos eBPF para mejorar el rendimiento.
- Establecer razonablemente el tamaño del bloque de direcciones IP.
Documentación de referencia
- Documentación oficial de Calico - Configuración de modos VXLAN/IPIP
- Análisis en profundidad del modelo de red de Kubernetes