Aiutaci 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à.
Configurare CNI per nodi ibridi
Cilium è la Container Networking Interface (CNI) AWS supportata per Amazon EKS Hybrid Nodes. È necessario installare un 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 un CNI. Puoi gestire il 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). Vedi Panoramica di Cilium Ingress e Cilium Gateway e scopri come configurare Cilium Configurazione delle politiche di rete Kubernetes per i nodi ibridi per l'ingressoTipo di servizio LoadBalancer, il bilanciamento del carico e le politiche di rete.
Cilium non è supportato da AWS quando viene eseguito su nodi in Cloud. AWS Amazon VPC CNI non è compatibile con i nodi ibridi e il CNI VPC è configurato con l'antiaffinità per l'etichetta. eks.amazonaws.com/compute-type: hybrid
Compatibilità delle versioni
v1.17.x
La versione Cilium è supportata per EKS Hybrid Nodes per ogni versione di Kubernetes supportata in Amazon EKS.
Consulta il supporto delle versioni Kubernetes per le versioni di Kubernetes supportate da Amazon EKS. I nodi ibridi EKS hanno lo stesso supporto per le versioni Kubernetes dei cluster Amazon EKS con nodi cloud.
Funzionalità supportate
AWS mantiene le build 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 apportare correzioni al progetto Cilium.
Funzione Cilium | Supportato da AWS |
---|---|
Conformità della rete Kubernetes |
Sì |
Connettività core del cluster |
Sì |
Famiglia di IP |
IPv4 |
Gestione del ciclo di vita |
Helm |
Modalità di rete |
Incapsulamento VXLAN |
Gestione degli indirizzi IP (IPAM) |
Ambito del cluster Cilium IPAM |
Politica di rete |
Politica di rete Kubernetes |
Protocollo Border Gateway (BGP) |
Piano di controllo Cilium BGP |
Ingresso a Kubernetes |
Ingresso Cilium, Gateway Cilium |
Allocazione IP del servizio LoadBalancer |
Cilium Load Balancer IPAM |
Pubblicità dell'indirizzo IP del servizio LoadBalancer |
Piano di controllo Cilium BGP |
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.
Puoi utilizzare il seguente URI nei comandi per utilizzare questo repository:. helm
oci://public.ecr.aws/eks/cilium/cilium:1.17.6-0
I comandi in questo argomento utilizzano questo repository. Tieni presente che alcunihelm repo
comandi non 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. Utilizza invece l'URI completo nella maggior parte dei comandi. -
Per impostazione predefinita, Cilium è configurato per l'esecuzione in modalità overlay/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 pod CIDRs deve essere instradabile sulla 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 Configurare webhook per nodi ibridi e Preparare la 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 Cilium BGP con nodi ibridi, consulta. Configurare 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
Installa Cilium su nodi ibridi
Procedura
-
Crea un file YAML chiamato.
cilium-values.yaml
L'esempio seguente configura Cilium per l'esecuzione solo su nodi ibridi impostando l'affinità per l'eks.amazonaws.com/compute-type: hybrid
etichetta per l'agente e l'operatore Cilium.-
Configura
clusterPoolIpv4PodCIDRList
con lo stesso pod CIDRs che hai configurato per le reti di pod remoti del tuo cluster EKS. Ad esempio,10.100.0.0/24
. L'operatore Cilium alloca le porzioni di indirizzi IP dall'interno dello spazioclusterPoolIpv4PodCIDRList
IP configurato. Il tuo pod CIDR non deve sovrapporsi al tuo nodo locale CIDR, al tuo VPC CIDR o al tuo servizio Kubernetes CIDR. -
Configura in base ai
clusterPoolIpv4MaskSize
pod richiesti per nodo. Ad esempio,25
per una dimensione di /25 segmenti di 128 pod per nodo. -
Non modificate
clusterPoolIpv4PodCIDRList
o,clusterPoolIpv4MaskSize
dopo aver distribuito Cilium sul vostro cluster, consultate Espansione del pool di clusterper ulteriori informazioni. -
Se utilizzi Cilium in modalità sostitutiva kube-proxy, imposta i valori Helm e assicurati di non avere una distribuzione kube-proxy esistente
kubeProxyReplacement: "true"
in esecuzione sugli stessi nodi di Cilium. -
L'esempio seguente disabilita il proxy Envoy Layer 7 (L7) utilizzato da Cilium per le politiche e l'ingresso della rete L7. Per ulteriori informazioni, consultare Configurazione delle politiche di rete Kubernetes per i nodi ibridi e Panoramica di Cilium Ingress e Cilium Gateway.
-
L'esempio seguente configura
loadBalancer.serviceTopology
:true
affinché Service Traffic Distribution funzioni correttamente se lo configuri per i tuoi servizi. Per ulteriori informazioni, consulta Configura la distribuzione del traffico di servizio. -
Per un elenco completo dei valori Helm per Cilium, consulta il riferimento Helm
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:
25
clusterPoolIPv4PodCIDRList: -POD_CIDR
loadBalancer: 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 sul tuo cluster.
-
Sostituisci
CILIUM_VERSION
con una versione di Cilium (ad esempio1.17.5
). Si consiglia di utilizzare la versione patch più recente per la versione secondaria di Cilium. Puoi trovare l'ultima versione della patch disponibile nel tuo repository Helm locale con il comando.helm search repo cilium/cilium --versions
-
Se stai usando un file kubeconfig specifico, usa il
--kubeconfig
flag con il comando Helm install.helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml
-
-
Conferma che l'installazione di Cilium è andata a buon fine con i seguenti comandi. Dovresti vedere la
cilium-operator
distribuzione e l'cilium-agent
esecuzione su ciascuno dei tuoi nodi ibridi. Inoltre, i nodi ibridi dovrebbero ora avere lo statoReady
. Per informazioni su come configurare Cilium BGP per pubblicizzare il pod sulla rete locale, procedi CIDRs a. Configurare Cilium BGP per nodi ibridikubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE cilium-jjjn8 1/1 Running 0 11m cilium-operator-d4f4d7fcb-sc5xn 1/1 Running 0 11m
kubectl get nodes
NAME STATUS ROLES AGE VERSION mi-04a2cf999b7112233 Ready <none> 19m v1.31.0-eks-a737599
Aggiorna Cilium su nodi ibridi
Prima di aggiornare la distribuzione di Cilium, consulta attentamente la documentazione sull'aggiornamento di Cilium e le note sull'aggiornamento
-
Assicurati di aver installato la
helm
CLI nel tuo ambiente a riga di comando. Consultate la documentazione di Helmper le istruzioni di installazione. -
Esegui il controllo pre-volo dell'upgrade a Cilium. Sostituiscilo
CILIUM_VERSION
con la tua versione di Cilium di destinazione. Ti consigliamo di eseguire la versione patch più recente per la tua versione secondaria di Cilium. Puoi trovare l'ultima versione della patch 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 il
cilium-preflight.yaml
, assicurati che il numero diREADY
pod sia lo stesso numero di pod Cilium in funzione.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 il dispiegamento di Cilium prima del volo sia contrassegnato come READY 1/1. Se mostra READY 0/1, consulta la sezione di convalida CNP
e risolvi i problemi relativi alla distribuzione prima di continuare con l'aggiornamento. kubectl get deployment -n kube-system cilium-pre-flight-check -w
NAME READY UP-TO-DATE AVAILABLE AGE cilium-pre-flight-check 1/1 1 0 12s
-
Eliminare il preflight
helm uninstall cilium-preflight --namespace kube-system
-
Prima di eseguire il
helm upgrade
comando, conservate i valori della distribuzione in aexisting-cilium-values.yaml
o utilizzate le opzioni della riga di--set
comando per le impostazioni quando eseguite il comando di upgrade. L'operazione di aggiornamento sovrascrive Cilium ConfigMap, quindi è fondamentale che i valori di configurazione vengano passati 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 versione stabile successiva. Quando si esegue l'aggiornamento da una versione secondaria a un'altra versione minore, si consiglia di eseguire prima l'aggiornamento all'ultima versione di patch per la versione secondaria di Cilium esistente. Per ridurre al minimo le interruzioni, imposta l'
upgradeCompatibility
opzione sulla versione iniziale di Cilium installata in questo cluster.helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version
CILIUM_VERSION
\ --namespace kube-system \ --set upgradeCompatibility=1.X
\ -f existing-cilium-values.yaml -
(Facoltativo) Se devi ripristinare l'aggiornamento a causa di problemi, esegui i seguenti comandi.
helm history cilium --namespace kube-system helm rollback cilium [REVISION] --namespace kube-system
Elimina Cilium dai nodi ibridi
-
Esegui il seguente comando per disinstallare tutti i componenti Cilium dal tuo cluster. Nota, la disinstallazione del 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.sh
scriptnel 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