Contribuisci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurazione della CNI per nodi ibridi
Cilium è la Container Networking Interface (CNI) AWS supportata per Amazon EKS Hybrid Nodes. Devi installare una CNI affinché i nodi ibridi siano pronti a servire i carichi di lavoro. I nodi ibridi vengono visualizzati con lo stato Not Ready fino all’esecuzione di una CNI. Puoi gestire la CNI con strumenti a tua scelta come Helm. Le istruzioni in questa pagina riguardano la gestione del ciclo di vita di Cilium (installazione, aggiornamento, eliminazione). Consulta Panoramica dell’ingresso di Cilium e del gateway di Cilium, Tipo servizio LoadBalancer e Configurazione delle policy di rete Kubernetes per i nodi ibridi per scoprire come configurare Cilium per l’ingresso, il bilanciamento del carico e le policy di rete.
Cilium non è supportato da AWS quando viene eseguito su nodi in Cloud. AWS La CNI di Amazon VPC non è compatibile con i nodi ibridi e la CNI del VPC è configurata con la non-affinità per l’etichetta eks.amazonaws.com/compute-type: hybrid.
La documentazione di Calico precedentemente contenuta in questa pagina è stata spostata in EKS Hybrid Examples Repository
Compatibilità delle versioni
Le versioni v1.17.x di Cilium v1.18.x sono supportate per EKS Hybrid Nodes per ogni versione di Kubernetes supportata in Amazon EKS.
Nota
Requisiti del kernel Cilium v1.18.3: a causa dei requisiti del kernel (kernel Linux >= 5.10), Cilium v1.18.3 non è supportato su:
-
Ubuntu 20.04
-
Red Hat Enterprise Linux (RHEL) 8
Per i requisiti di sistema, consulta i
Consulta il supporto delle versioni Kubernetes per individuare quali sono le versioni supportate da Amazon EKS. EKS Hybrid Nodes ha lo stesso supporto per le versioni di Kubernetes dei cluster Amazon EKS con nodi cloud.
Funzionalità supportate
AWS mantiene versioni di Cilium for EKS Hybrid Nodes basate sul progetto open source Cilium.
AWS fornisce supporto tecnico per le configurazioni predefinite delle seguenti funzionalità di Cilium da utilizzare con EKS Hybrid Nodes. Se si prevede di utilizzare funzionalità che non rientrano nell'ambito del AWS supporto, si consiglia di ottenere un supporto commerciale alternativo per Cilium o di disporre dell'esperienza interna necessaria per risolvere i problemi e contribuire alle correzioni del progetto Cilium.
| Funzionalità di Cilium | Supportato da AWS |
|---|---|
|
Conformità della rete Kubernetes |
Sì |
|
Connettività del cluster principale |
Sì |
|
Famiglia di IP |
IPv4 |
|
Gestione del ciclo di vita |
Helm |
|
Modalità di rete |
Incapsulamento VXLAN |
|
Gestione indirizzi IP (IPAM) |
Ambito del cluster IPAM (Gestione degli indirizzi IP) di Cilium |
|
Policy di rete |
Policy di rete Kubernetes |
|
Border Gateway Protocol (BGP) |
Piano di controllo (control-plane) BGP di Cilium |
|
Ingresso Kubernetes |
Ingresso di Cilium, gateway di Cilium |
|
Allocazione LoadBalancer IP del servizio |
IPAM del bilanciatore del carico di Cilium |
|
Pubblicità LoadBalancer dell'indirizzo IP del servizio |
Piano di controllo (control-plane) BGP di Cilium |
|
sostituzione kube-proxy |
Sì |
Considerazioni su Cilium
-
Repository Helm: AWS ospita il grafico Cilium Helm nell'Amazon Elastic Container Registry Public (Amazon ECR Public) presso Amazon EKS Cilium/Cilium.
Le versioni disponibili includono: -
Cilium v1.17.9:
oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0 -
Cilium v1.18.3:
oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0I comandi in questo argomento utilizzano questo repository. Tieni presente che alcuni comandi
helm reponon sono validi per i repository Helm in Amazon ECR Public, quindi non puoi fare riferimento a questo repository da un nome di repository Helm locale. Invece, utilizza l’URI completo nella maggior parte dei comandi.
-
-
Per impostazione predefinita, Cilium è configurato per l’esecuzione in modalità sovrapposizione/tunnel con VXLAN come metodo di incapsulamento
. Questa modalità ha il minor numero di requisiti sulla rete fisica sottostante. -
Per impostazione predefinita, Cilium maschera
l’indirizzo IP di origine di tutto il traffico dei pod in uscita dal cluster all’indirizzo IP del nodo. Se disabiliti il mascheramento, il tuo pod CIDRs deve essere instradabile sulla tua rete locale. -
Se esegui webhook su nodi ibridi, il pod CIDRs deve essere instradabile sulla rete locale. Se i pod non CIDRs sono instradabili sulla rete locale, si consiglia di eseguire webhook sui nodi cloud dello stesso cluster. Per ulteriori informazioni, consulta Configurazione di webhook per nodi ibridi e Preparazione della rete per i nodi ibridi.
-
AWS consiglia di utilizzare la funzionalità BGP integrata di Cilium per rendere il pod instradabile sulla rete locale. CIDRs Per ulteriori informazioni su come configurare il BGP di Cilium con nodi ibridi, consulta Configurazione di Cilium BGP per nodi ibridi.
-
La gestione degli indirizzi IP (IPAM) predefinita in Cilium si chiama Cluster Scope
, in cui l'operatore Cilium alloca gli indirizzi IP per ogni nodo in base al pod configurato dall'utente. CIDRs
Installazione di Cilium su nodi ibridi
Procedura
-
Crea un file YAML denominato
cilium-values.yaml. L’esempio seguente configura Cilium per l’esecuzione solo su nodi ibridi impostando l’affinità per l’etichettaeks.amazonaws.com/compute-type: hybridper l’agente e l’operatore di Cilium.-
Configura
clusterPoolIpv4PodCIDRListcon lo stesso pod che CIDRs hai configurato per le reti di pod remoti del tuo cluster EKS. Ad esempio,10.100.0.0/24. L’operatore di Cilium alloca le porzioni di indirizzi IP dall’interno dello spazio IPclusterPoolIpv4PodCIDRListconfigurato. Il CIDR del pod non deve sovrapporsi al nodo CIDR on-premises, al CIDR del VPC o del servizio Kubernetes. -
Configura
clusterPoolIpv4MaskSizein base ai pod richiesti per nodo. Ad esempio,25per una dimensione dei segmenti di /25 di 128 pod per nodo. -
Non modificare
clusterPoolIpv4PodCIDRListoclusterPoolIpv4MaskSizedopo aver implementato Cilium sul cluster, consulta Expanding the cluster poolper ulteriori informazioni. -
Se esegui Cilium in modalità sostitutiva kube-proxy, imposta
kubeProxyReplacement: "true"nei valori Helm e assicurati di non avere un’implementazione kube-proxy esistente in esecuzione sugli stessi nodi di Cilium. -
L’esempio seguente disabilita il proxy Envoy Layer 7 (L7) utilizzato da Cilium per le policy di rete e l’ingresso L7. Per ulteriori informazioni, consultare Configurazione delle policy di rete Kubernetes per i nodi ibridi e Panoramica dell’ingresso di Cilium e del gateway di Cilium.
-
L’esempio seguente configura
loadBalancer.serviceTopology:trueaffinché la distribuzione del traffico del servizio funzioni correttamente se configurata per i tuoi servizi. Per ulteriori informazioni, consulta Configurazione della distribuzione del traffico del servizio. -
Per un elenco completo dei valori Helm per Cilium, consulta Helm reference
nella documentazione di Cilium. affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid ipam: mode: cluster-pool operator: clusterPoolIPv4MaskSize:25clusterPoolIPv4PodCIDRList: -POD_CIDRloadBalancer: serviceTopology: true operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false loadBalancer: serviceTopology: true envoy: enabled: false kubeProxyReplacement: "false"
-
-
Installa Cilium nel cluster.
-
Sostituisci
CILIUM_VERSIONcon una versione Cilium (ad esempio1.17.9-0o1.18.3-0). Consigliamo di utilizzare la versione della patch più recente per la versione secondaria di Cilium. -
Assicurati che i tuoi nodi soddisfino i requisiti del kernel per la versione che scegli. Cilium v1.18.3 richiede un kernel Linux >= 5.10.
-
Se stai utilizzando un file kubeconfig specifico, usa il flag
--kubeconfigcon il comando di installazione Helm.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --versionCILIUM_VERSION\ --namespace kube-system \ --values cilium-values.yaml
-
-
Conferma che l’installazione di Cilium sia stata eseguita correttamente con i comandi seguenti. Dovresti visualizzare l’implementazione
cilium-operatorecilium-agentin esecuzione su ciascuno dei tuoi nodi ibridi. Inoltre, i nodi ibridi dovrebbero avere lo statoReady. Per informazioni su come configurare Cilium BGP per pubblicizzare il pod sulla rete locale, procedi a. CIDRs Configurazione di Cilium BGP per nodi ibridikubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGE cilium-jjjn8 1/1 Running 0 11m cilium-operator-d4f4d7fcb-sc5xn 1/1 Running 0 11mkubectl get nodesNAME STATUS ROLES AGE VERSION mi-04a2cf999b7112233 Ready <none> 19m v1.31.0-eks-a737599
Aggiornamento di Cilium su nodi ibridi
Prima di aggiornare l’implementazione di Cilium, consulta attentamente la documentazione sull’aggiornamento di Cilium
-
Assicurati di aver installato la CLI
helmnel tuo ambiente a riga di comando. Per istruzioni sull’installazione, consulta la documentazione di Helm. -
Esegui il controllo preflight dell’aggiornamento di Cilium. Sostituisci
CILIUM_VERSIONcon la versione di Cilium di destinazione. Ti consigliamo di eseguire la versione della patch più recente per la versione secondaria di Cilium. Puoi trovare la versione della patch più recente per una determinata versione minore di Cilium nella sezione Stable Releasesdella documentazione di Cilium. helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \ --namespace=kube-system \ --set preflight.enabled=true \ --set agent=false \ --set operator.enabled=false -
Dopo aver applicato
cilium-preflight.yaml, assicurati che il numero di podREADYsia lo stesso numero di pod di Cilium in esecuzione.kubectl get ds -n kube-system | sed -n '1p;/cilium/p'NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE cilium 2 2 2 2 2 <none> 1h20m cilium-pre-flight-check 2 2 2 2 2 <none> 7m15s -
Una volta che il numero di pod READY è uguale, assicurati che anche l’implementazione preflight di Cilium sia contrassegnata come READY 1/1. Se viene visualizzato READY 0/1, consulta la sezione di CNP Validation
e risolvi i problemi relativi all’implementazione prima di continuare con l’aggiornamento. kubectl get deployment -n kube-system cilium-pre-flight-check -wNAME READY UP-TO-DATE AVAILABLE AGE cilium-pre-flight-check 1/1 1 0 12s -
Elimina il preflight
helm uninstall cilium-preflight --namespace kube-system -
Prima di eseguire il comando
helm upgrade, conserva i valori dell’implementazione inexisting-cilium-values.yamlo utilizza le opzioni--setdella riga di comando per le impostazioni quando esegui il comando di aggiornamento. L'operazione di aggiornamento sovrascrive Cilium ConfigMap, quindi è fondamentale che i valori di configurazione vengano trasmessi durante l'aggiornamento.helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml -
Durante le normali operazioni del cluster, tutti i componenti Cilium devono eseguire la stessa versione. I passaggi seguenti descrivono come aggiornare tutti i componenti da una versione stabile a una successiva. Quando esegui l’aggiornamento da una versione secondaria a un’altra, consigliamo di aggiornare prima alla versione della patch più recente per la versione secondaria esistente di Cilium. Per ridurre al minimo le interruzioni, imposta l’opzione
upgradeCompatibilitysulla versione iniziale di Cilium installata in questo cluster.helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --versionCILIUM_VERSION\ --namespace kube-system \ --set upgradeCompatibility=1.X\ -f existing-cilium-values.yaml -
(Facoltativo) Se devi eseguire il rollback dell’aggiornamento a causa di problemi, esegui i comandi seguenti.
helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system
Eliminazione di Cilium dai nodi ibridi
-
Esegui il comando seguente per disinstallare tutti i componenti Cilium dal tuo cluster. Nota, la disinstallazione della CNI potrebbe influire sulla salute di nodi e pod e non dovrebbe essere eseguita sui cluster di produzione.
helm uninstall cilium --namespace kube-system -
Per ripulire i file e le risorse di configurazione su disco, se si utilizzano le directory di configurazione standard, è possibile rimuovere i file come mostrato dallo
cni-uninstall.shscriptnel repository Cilium su. GitHub -
Per rimuovere Cilium Custom Resource Definitions (CRDs) dal tuo cluster, puoi eseguire i seguenti comandi.
kubectl get crds -oname | grep "cilium" | xargs kubectl delete