Esplorazione e pratica del plug-in di rete Calico
Questo articolo esplora in profondità la configurazione e la pratica del plug-in di rete Calico nei cluster Kubernetes, analizzando i metodi comuni di risoluzione dei problemi e le strategie di ottimizzazione della rete.
Categories:
Esplorazione e pratica del plug-in di rete Calico
Panoramica
Calico è un plug-in per l’interfaccia di rete dei container (CNI) ampiamente utilizzato nell’ecosistema Kubernetes, che fornisce connessioni di rete ad alte prestazioni e una gestione flessibile delle politiche di rete. Basato sull’esperienza in ambienti di produzione, questo articolo analizza in profondità le funzionalità principali e i punti chiave di configurazione di Calico.
Architettura delle funzionalità principali
Calico utilizza un modello di routing Layer 3 per implementare la comunicazione tra i container. I componenti principali includono:
- Felix: Demone eseguito su ogni nodo, responsabile della configurazione del routing e delle regole ACL
- BIRD: Componente di distribuzione del routing, implementa lo scambio delle informazioni di routing tra i nodi
- confd: Strumento di generazione di configurazione dinamica
- Plug-in CNI: Interfaccia con il modello di rete Kubernetes
Configurazione del pool di indirizzi IP
Principi dell’architettura di rete
graph TD
subgraph Cluster Kubernetes
node1[Nodo1] -->|Routing BGP| node2[Nodo2]
node1 -->|Tunnel VXLAN| node3[Nodo3]
node2 -->|Tunnel 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
Precauzioni per la modifica della configurazione
- Dopo aver modificato l’IPPool, è necessario riavviare il componente calico-node affinché la configurazione diventi effettiva
- Le modifiche al CIDR potrebbero causare interruzioni di rete per i Pod esistenti; operare con cautela
- La scelta della modalità VXLAN/IPIP deve considerare le prestazioni e la compatibilità della rete
Passaggi dettagliati per la configurazione
Modificare la configurazione IPPool
- Ottenere la configurazione corrente:
kubectl get ippools.crd.projectcalico.org -o yaml - Modificare la configurazione:
kubectl edit ippools.crd.projectcalico.org default-ipv4-ippool - Descrizione dei parametri principali:
cidr: Intervallo CIDR della rete PodvxlanMode: Always per abilitare VXLANipipMode: Never per disabilitare IPIPnatOutgoing: true per abilitare NAT in uscita
Risoluzione comune dei problemi
Errore di comunicazione tra nodi
flowchart TD
A[Comunicazione di rete tra nodi fallita] --> B{Controllare modalità}
B -->|VXLAN| C[Verificare porta UDP 4789]
B -->|IPIP| D[Verificare protocollo 4]
C --> E[Configurazione firewall]
D --> E
E --> F[Problema risolto]Comandi di verifica della configurazione
# Controllare lo stato del nodo Calico
calicoctl node status
# Visualizzare la tabella di routing
ip route show
Suggerimenti per l’ottimizzazione delle prestazioni
- Utilizzare BGP invece di VXLAN per i cluster di grandi dimensioni
- Abilitare il piano dati eBPF per migliorare le prestazioni
- Impostare correttamente la dimensione del blocco di indirizzi IP
Documentazione di riferimento
- Documentazione ufficiale di Calico - Configurazione modalità VXLAN/IPIP
- Analisi approfondita del modello di rete Kubernetes