

 **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
<a name="hybrid-nodes-cni"></a>

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](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Tipo di servizio LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) e [Configurazione delle policy di rete Kubernetes per i nodi ibridi](hybrid-nodes-network-policies.md) 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](https://github.com/aws-samples/eks-hybrid-examples).

## Compatibilità delle versioni
<a name="hybrid-nodes-cilium-version-compatibility"></a>

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](https://docs.cilium.io/en/stable/operations/system_requirements/) requisiti di sistema di Cilium.

Consulta il [supporto delle versioni Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) 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
<a name="hybrid-nodes-cilium-support"></a>

 AWS [mantiene versioni di Cilium for EKS Hybrid Nodes basate sul progetto open source Cilium.](https://github.com/cilium/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 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
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Repository Helm**[: AWS ospita il grafico Cilium Helm nell'Amazon Elastic Container Registry Public (Amazon ECR Public) presso Amazon EKS Cilium/Cilium.](https://gallery.ecr.aws/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-0` 

    I comandi in questo argomento utilizzano questo repository. Tieni presente che alcuni comandi `helm repo` 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. 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](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation). Questa modalità ha il minor numero di requisiti sulla rete fisica sottostante.
+ Per impostazione predefinita, Cilium [maschera](https://docs.cilium.io/en/stable/network/concepts/masquerading/) 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](hybrid-nodes-webhooks.md) e [Preparazione della rete per i nodi ibridi](hybrid-nodes-networking.md).
+  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](hybrid-nodes-cilium-bgp.md).
+ La gestione degli indirizzi IP (IPAM) predefinita in Cilium si chiama [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/), 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
<a name="hybrid-nodes-cilium-install"></a>

### Procedura
<a name="_procedure"></a>

1. 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’etichetta `eks.amazonaws.com/compute-type: hybrid` per l’agente e l’operatore di Cilium.
   + *Configura `clusterPoolIpv4PodCIDRList` con 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 IP `clusterPoolIpv4PodCIDRList` configurato. Il CIDR del pod non deve sovrapporsi al nodo CIDR on-premises, al CIDR del VPC o del servizio Kubernetes.
   + Configura `clusterPoolIpv4MaskSize` in base ai pod richiesti per nodo. Ad esempio, `25` per una dimensione dei segmenti di /25 di 128 pod per nodo.
   + Non modificare `clusterPoolIpv4PodCIDRList` o `clusterPoolIpv4MaskSize` dopo aver implementato Cilium sul cluster, consulta [Expanding the cluster pool](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) per 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](hybrid-nodes-network-policies.md) e [Panoramica dell’ingresso di Cilium e del gateway di Cilium](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + L’esempio seguente configura `loadBalancer.serviceTopology`: `true` affinché 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](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Per un elenco completo dei valori Helm per Cilium, consulta [Helm reference](https://docs.cilium.io/en/stable/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: 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"
     ```

1. Installa Cilium nel cluster.
   + Sostituisci `CILIUM_VERSION` con una versione Cilium (ad esempio `1.17.9-0` o`1.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 `--kubeconfig` con il comando di installazione Helm.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Conferma che l’installazione di Cilium sia stata eseguita correttamente con i comandi seguenti. Dovresti visualizzare l’implementazione `cilium-operator` e `cilium-agent` in esecuzione su ciascuno dei tuoi nodi ibridi. Inoltre, i nodi ibridi dovrebbero avere lo stato `Ready`. Per informazioni su come configurare Cilium BGP per pubblicizzare il pod sulla rete locale, procedi a. CIDRs [Configurazione di Cilium BGP per nodi ibridi](hybrid-nodes-cilium-bgp.md)

   ```
   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
   ```

## Aggiornamento di Cilium su nodi ibridi
<a name="hybrid-nodes-cilium-upgrade"></a>

Prima di aggiornare l’implementazione di Cilium, consulta attentamente la [documentazione sull’aggiornamento di Cilium](https://docs.cilium.io/en/v1.17/operations/upgrade/) e le note sull’aggiornamento per comprendere le modifiche nella versione di Cilium di destinazione.

1. Assicurati di aver installato la CLI `helm` nel tuo ambiente a riga di comando. Per istruzioni sull’installazione, consulta la [documentazione di Helm](https://helm.sh/docs/intro/quickstart/).

1. Esegui il controllo preflight dell’aggiornamento di Cilium. Sostituisci `CILIUM_VERSION` con 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 Releases](https://github.com/cilium/cilium#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
   ```

1. Dopo aver applicato `cilium-preflight.yaml`, assicurati che il numero di pod `READY` sia 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
   ```

1. 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](https://docs.cilium.io/en/v1.17/operations/upgrade/#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 -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Elimina il preflight

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Prima di eseguire il comando `helm upgrade`, conserva i valori dell’implementazione in `existing-cilium-values.yaml` o utilizza le opzioni `--set` della 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
   ```

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

1. (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
<a name="hybrid-nodes-cilium-delete"></a>

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

   [Le interfacce e le rotte configurate da Cilium non vengono rimosse per impostazione predefinita quando il CNI viene rimosso dal cluster, consulta il GitHub problema per ulteriori informazioni.](https://github.com/cilium/cilium/issues/34289)

1. 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`script](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) nel repository Cilium su. GitHub

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

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