Configurare CNI per nodi ibridi - Amazon EKS

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

La documentazione di Calico precedentemente contenuta in questa pagina è stata spostata nell'EKS Hybrid Examples Repository.

Compatibilità delle versioni

v1.17.xLa 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. Per ricevere supporto da AWS Cilium, è necessario utilizzare le build Cilium AWS mantenute e le versioni di Cilium supportate.

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

Connettività core del cluster

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

Considerazioni su Cilium

Installa Cilium su nodi ibridi

Procedura

  1. 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: hybridetichetta 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 spazio clusterPoolIpv4PodCIDRList 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 cluster per 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 configuraloadBalancer.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"
  2. 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
  3. Conferma che l'installazione di Cilium è andata a buon fine con i seguenti comandi. Dovresti vedere la cilium-operator distribuzione e l'cilium-agentesecuzione 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 ibridi

    kubectl 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 per comprendere le modifiche nella versione di Cilium di destinazione.

  1. Assicurati di aver installato la helm CLI nel tuo ambiente a riga di comando. Consultate la documentazione di Helm per le istruzioni di installazione.

  2. 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 Releases della 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
  3. Dopo aver applicato ilcilium-preflight.yaml, assicurati che il numero di READY 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
  4. 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
  5. Eliminare il preflight

    helm uninstall cilium-preflight --namespace kube-system
  6. Prima di eseguire il helm upgrade comando, conservate i valori della distribuzione in a existing-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
  7. 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'upgradeCompatibilityopzione 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
  8. (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

  1. 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

    Le interfacce e le rotte configurate da Cilium non vengono rimosse per impostazione predefinita quando il CNI viene rimosso dal cluster, consulta il problema per ulteriori informazioni. GitHub

  2. 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.shscript nel repository Cilium su. GitHub

  3. Per rimuovere Cilium Custom Resource Definitions (CRDs) dal tuo cluster, puoi eseguire i seguenti comandi.

    kubectl get crds -oname | grep "cilium" | xargs kubectl delete