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 un CNI per nodi ibridi
Cilium e Calico sono supportati come Container Networking Interfaces () CNIs 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 gestirli CNIs con strumenti di tua scelta come Helm. 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à della versione CNI
3.29.x
La versione Calico è supportata e consigliata per EKS Hybrid Nodes per ogni versione di Kubernetes supportata in Amazon EKS.
1.16.x
La versione Cilium è supportata e consigliata per i nodi ibridi EKS per ogni versione di Kubernetes supportata in Amazon EKS.
Funzionalità supportate
AWS supporta le seguenti funzionalità di Cilium e Calico per l'uso con nodi ibridi. Se prevedi di utilizzare funzionalità che non rientrano nell'ambito del AWS supporto, ti consigliamo di ottenere assistenza commerciale per il plug-in o di avere l'esperienza interna necessaria per risolvere i problemi e contribuire con correzioni al progetto del plug-in CNI.
Funzionalità | Cilium | Calico |
---|---|---|
Conformità della rete Kubernetes |
Sì |
Sì |
Connettività da piano di controllo a nodo |
Sì |
Sì |
Connettività da piano di controllo a pod |
Sì |
Sì |
Gestione del ciclo di vita |
Installa, aggiorna, elimina |
Installa, aggiorna, elimina |
Modalità di rete |
VXLAN |
VXLAN |
Gestione degli indirizzi IP (IPAM) |
Ambito del cluster (Cilium IPAM) |
Calico IPAM |
Famiglia di IP |
IPv4 |
IPv4 |
BGP |
Sì (Cilium Control Plane) |
Sì |
Installa Cilium su nodi ibridi
-
Assicurati di aver installato la CLI helm nel tuo ambiente a riga di comando. Consulta la documentazione di Helm per le istruzioni
di installazione. -
Installa il repository Cilium Helm.
helm repo add cilium https://helm.cilium.io/
-
Crea un file YAML chiamato.
cilium-values.yaml
Se hai configurato almeno una rete di pod remota, configura lo stesso pod CIDRs per la tua.clusterPoolIPv4PodCIDRList
Non dovresti cambiare il tuoclusterPoolIPv4PodCIDRList
dopo aver distribuito Cilium sul tuo cluster. È possibile configurareclusterPoolIPv4MaskSize
in base ai pod richiesti per nodo, vedere Espansione del pool di clusternella documentazione di Cilium. Per un elenco completo dei valori Helm per Cilium, consulta il riferimento Helm nella documentazione di Cilium. L'esempio seguente configura tutti i componenti Cilium per l'esecuzione solo sui nodi ibridi, poiché hanno l'etichetta. eks.amazonaws.com/compute-type: hybrid
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. Ciò consente a Cilium di funzionare con cluster Amazon EKS con reti di pod remoti configurate e con cluster che non dispongono di reti di pod remoti configurate. Se disabiliti il mascheramento per la tua distribuzione Cilium, devi configurare il cluster Amazon EKS con le tue reti di pod remoti e pubblicizzare gli indirizzi dei tuoi pod con la tua rete locale. Se esegui webhook sui tuoi nodi ibridi, devi configurare il cluster con le tue reti di pod remoti e devi pubblicizzare gli indirizzi dei tuoi pod con la tua rete locale.
Un modo comune per pubblicizzare gli indirizzi dei pod con la rete locale consiste nell'utilizzare BGP. Per utilizzare BGP con Cilium, devi impostare.
bgpControlPlane.enabled: true
Per ulteriori informazioni sul supporto BGP di Cilium, consulta Cilium BGP Control Plane 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 operator: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid unmanagedPodWatcher: restart: false envoy: enabled: false
-
Installa Cilium sul tuo cluster.
CILIUM_VERSION
Sostituiscilo con la versione di Cilium desiderata. Si consiglia di eseguire l'ultima versione della patch per la 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. Se state abilitando BGP per la vostra implementazione, aggiungete il --set bgpControlPlane.enabled=true
flag nel comando seguente. Se stai usando un file kubeconfig specifico, usa il--kubeconfig
flag con il comando Helm install.helm install cilium cilium/cilium \ --version
CILIUM_VERSION
\ --namespace kube-system \ --values cilium-values.yaml -
Puoi confermare 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 BGP per Cilium, procedi al passaggio successivo.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
-
Per utilizzare BGP con Cilium per pubblicizzare gli indirizzi dei pod sulla rete locale, è necessario aver installato Cilium con.
bgpControlPlane.enabled: true
Per configurare BGP in Cilium, per prima cosa crea un file chiamatocilium-bgp-cluster.yaml
con a con l'IP del router localeCiliumBGPClusterConfig
conpeerAddress
cui stai effettuando il peering. ConfiguralocalASN
e inpeerASN
base alla configurazione del router locale.apiVersion: cilium.io/v2alpha1 kind: CiliumBGPClusterConfig metadata: name: cilium-bgp spec: nodeSelector: matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: - hybrid bgpInstances: - name: "rack0" localASN: ONPREM_ROUTER_ASN peers: - name: "onprem-router" peerASN: PEER_ASN peerAddress: ONPREM_ROUTER_IP peerConfigRef: name: "cilium-peer"
-
Applica la configurazione Cilium BGP Cluster al tuo cluster.
kubectl apply -f cilium-bgp-cluster.yaml
-
La
CiliumBGPPeerConfig
risorsa definisce una configurazione peer BGP. Più peer possono condividere la stessa configurazione e fornire un riferimento alla risorsa comune.CiliumBGPPeerConfig
Crea un file denominatocilium-bgp-peer.yaml
per configurare la configurazione peer per la tua rete locale. Consulta la configurazione peer BGPnella documentazione di Cilium per un elenco completo delle opzioni di configurazione. apiVersion: cilium.io/v2alpha1 kind: CiliumBGPPeerConfig metadata: name: cilium-peer spec: timers: holdTimeSeconds: 30 keepAliveTimeSeconds: 10 gracefulRestart: enabled: true restartTimeSeconds: 120 families: - afi: ipv4 safi: unicast advertisements: matchLabels: advertise: "bgp"
-
Applica la configurazione Cilium BGP Peer al tuo cluster.
kubectl apply -f cilium-bgp-peer.yaml
-
La
CiliumBGPAdvertisement
risorsa viene utilizzata per definire vari tipi di pubblicità e attributi ad essi associati. Crea un file denominatocilium-bgp-advertisement.yaml
e configura laCiliumBGPAdvertisement
risorsa con le impostazioni desiderate.apiVersion: cilium.io/v2alpha1 kind: CiliumBGPAdvertisement metadata: name: bgp-advertisements labels: advertise: bgp spec: advertisements: - advertisementType: "PodCIDR" - advertisementType: "Service" service: addresses: - ClusterIP - ExternalIP - LoadBalancerIP
-
Applica la configurazione Cilium BGP Advertisement al tuo cluster.
kubectl apply -f cilium-bgp-advertisement.yaml
È possibile confermare che il peering BGP ha funzionato con la CLI di Cilium utilizzando
il comando. cilium bgp peers
Dovresti vedere i valori corretti nell'output per il tuo ambiente e lo stato della sessione come.established
Per ulteriori informazioni sulla risoluzione dei problemi, consulta la Guida alla risoluzione dei problemi e alle operazioninella documentazione di Cilium.
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. -
Installa il repository Cilium Helm.
helm repo add cilium https://helm.cilium.io/
-
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 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
-
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.Prima di eseguire il comando helm upgrade, conservate i valori per la distribuzione in a
cilium-values.yaml
o utilizzate le opzioni della riga di--set
comando per le impostazioni. L'operazione di aggiornamento sovrascrive Cilium ConfigMap, quindi è fondamentale che i valori di configurazione vengano passati durante l'aggiornamento. Se si utilizza BGP, si consiglia di utilizzare l'opzione della--set bgpControlPlane=true
riga di comando invece di fornire queste informazioni nel file dei valori.helm upgrade cilium cilium/cilium --version CILIUM_VERSION \ --namespace kube-system \ --set upgradeCompatibility=1.X \ -f cilium-values.yaml
-
(Facoltativo) Se è necessario 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 può influire sulla salute di nodi e pod e non deve 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
Installa Calico su nodi ibridi
-
Assicurati di aver installato la CLI helm nel tuo ambiente a riga di comando. Consulta la documentazione di Helm per le istruzioni
di installazione. -
Installa il repository Cilium Helm.
helm repo add projectcalico https://docs.tigera.io/calico/charts
-
Crea un file YAML chiamato
calico-values.yaml
che configura Calico con affinità per l'esecuzione su nodi ibridi. Per ulteriori informazioni sulle diverse modalità di rete di Calico, consulta Determinazione della migliore opzione di rete nella documentazionedi Calico. -
POD_CIDR
Sostituiscila con le gamme CIDR per i tuoi pod. Se hai configurato il tuo cluster Amazon EKS con reti di pod remoti,POD_CIDR
ciò che specifichi per Calico dovrebbe essere lo stesso delle reti di pod remoti. Ad esempio10.100.0.0/24
. -
Sostituisci
CIDR_SIZE
con la dimensione del segmento CIDR che desideri allocare a ciascun nodo. Ad esempio,25
per una dimensione del segmento /25. Per ulteriori informazioni su CIDRblockSize
e sulla modifica diblockSize
, consulta Modifica della dimensione dei blocchi del pool IP nella documentazionedi Calico. -
Nell'esempio seguente,
natOutgoing
è abilitato ebgp
disabilitato. In questa configurazione, Calico può essere eseguito su cluster Amazon EKS con Remote Pod Network configurato e può essere eseguito su cluster che non hanno Remote Pod Network configurato. Se l'natOutgoing
impostazione è disattivata, è necessario configurare il cluster con le reti di pod remoti e la rete locale deve essere in grado di indirizzare correttamente il traffico destinato al pod. CIDRs Un modo comune per pubblicizzare gli indirizzi dei pod con la rete locale consiste nell'utilizzare BGP. Per usare BGP con Calico, devi abilitarlo.bgp
L'esempio seguente configura tutti i componenti di Calico per funzionare solo sui nodi ibridi, poiché hanno l'etichetta.eks.amazonaws.com/compute-type: hybrid
Se esegui webhook sui tuoi nodi ibridi, devi configurare il cluster con le tue reti di pod remoti e devi pubblicizzare gli indirizzi dei tuoi pod con la tua rete locale. L'esempio seguente configuracontrolPlaneReplicas: 1
, aumenta il valore se hai più nodi ibridi e desideri eseguire i componenti del piano di controllo di Calico in modo altamente disponibile.installation: enabled: true cni: type: Calico ipam: type: Calico calicoNetwork: bgp: Disabled ipPools: - cidr: POD_CIDR blockSize: CIDR_SIZE encapsulation: VXLAN natOutgoing: Enabled nodeSelector: eks.amazonaws.com/compute-type == "hybrid" controlPlaneReplicas: 1 controlPlaneNodeSelector: eks.amazonaws.com/compute-type: hybrid calicoNodeDaemonSet: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid csiNodeDriverDaemonSet: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid calicoKubeControllersDeployment: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid typhaDeployment: spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: hybrid
-
-
Installa Calico sul tuo cluster. Sostituiscilo
CALICO_VERSION
con la versione di Calico desiderata (ad esempio 3.29.0), consulta le versioni di Calicoper trovare l'ultima versione di patch per la tua versione secondaria di Calico. Si consiglia di eseguire l'ultima versione della patch per la versione secondaria di Calico. Se stai usando un kubeconfig
file specifico, usa il--kubeconfig
flag.helm install calico projectcalico/tigera-operator \ --version
CALICO_VERSION
\ --namespace kube-system \ -f calico-values.yaml -
Puoi confermare che l'installazione di Calico è andata a buon fine con i seguenti comandi. Dovresti vedere la
tigera-operator
distribuzione, l'calico-node
agente in esecuzione su ciascuno dei tuoi nodi ibridi, ilcalico-apiserver
csi-node-driver
, e quellocalico-kube-controllers
distribuito. Inoltre, i nodi ibridi dovrebbero ora avere lo statoReady
. Se lo utilizzinatOutgoing: Disabled
, tutti i componenti di Calico non potranno avviarsi correttamente finché non pubblicizzerai gli indirizzi dei tuoi pod nella tua rete locale. Per informazioni su come configurare BGP per Calico, procedi al passaggio successivo.kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-6c77bb6d46-2n8mq 1/1 Running 0 69s calico-system calico-kube-controllers-7c5f8556b5-7h267 1/1 Running 0 68s calico-system calico-node-s5nnk 1/1 Running 0 68s calico-system calico-typha-6487cc9d8c-wc5jm 1/1 Running 0 69s calico-system csi-node-driver-cv42d 2/2 Running 0 68s kube-system coredns-7bb495d866-2lc9v 1/1 Running 0 6m27s kube-system coredns-7bb495d866-2t8ln 1/1 Running 0 157m kube-system kube-proxy-lxzxh 1/1 Running 0 18m kube-system tigera-operator-f8bc97d4c-28b4d 1/1 Running 0 90s
kubectl get nodes
NAME STATUS ROLES AGE VERSION mi-0c6ec2f6f79176565 Ready <none> 5h13m v1.31.0-eks-a737599
-
Se hai installato Calico senza BGP, salta questo passaggio. Per configurare BGP, crea un file chiamato
calico-bgp.yaml
con una configurazione e un.BGPPeer
BGPConfiguration
È importante distinguereBGPPeer
e.BGPConfiguration
BGPPeer
È il router o la risorsa remota abilitata per BGP con cui i nodi di un cluster Calico effettueranno il peering. LaBGPPeer
configurazione è simileasNumber
all'impostazione di Cilium.peerASN
BGPConfiguration
Viene applicato a ciascun nodo Calico e ilasNumber
for theBGPConfiguration
è equivalente all'impostazione Cilium.localASN
SostituisciONPREM_ROUTER_IP
ONPREM_ROUTER_ASN
, eLOCAL_ASN
nell'esempio seguente con i valori per il tuo ambiente locale. L'keepOriginalNextHop: true
impostazione viene utilizzata per garantire che ogni nodo pubblicizzi solo la rete di pod CIDR di sua proprietà.apiVersion: projectcalico.org/v3 kind: BGPPeer metadata: name: calico-hybrid-nodes spec: peerIP:
ONPREM_ROUTER_IP
asNumber:ONPREM_ROUTER_ASN
keepOriginalNextHop: true --- apiVersion: projectcalico.org/v3 kind: BGPConfiguration metadata: name: default spec: nodeToNodeMeshEnabled: false asNumber:LOCAL_ASN
-
Applica il file al tuo cluster.
kubectl apply -f calico-bgp.yaml
-
Conferma che i pod di Calico siano in esecuzione con il seguente comando.
kubectl get pods -n calico-system -w
NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-598bf99b6c-2vltk 1/1 Running 0 3h24m calico-system calico-kube-controllers-75f84bbfd6-zwmnx 1/1 Running 31 (59m ago) 3h20m calico-system calico-node-9b2pg 1/1 Running 0 5h17m calico-system calico-typha-7d55c76584-kxtnq 1/1 Running 0 5h18m calico-system csi-node-driver-dmnmm 2/2 Running 0 5h18m kube-system coredns-7bb495d866-dtn4z 1/1 Running 0 6h23m kube-system coredns-7bb495d866-mk7j4 1/1 Running 0 6h19m kube-system kube-proxy-vms28 1/1 Running 0 6h12m kube-system tigera-operator-55f9d9d565-jj9bg 1/1 Running 0 73m
Se hai riscontrato problemi durante questi passaggi, consulta la guida alla risoluzione dei problemi nella documentazione
Aggiorna Calico su nodi ibridi
Prima di aggiornare la distribuzione di Calico, consulta attentamente la documentazione di aggiornamento di Calico
-
Scarica il manifesto dell'operatore per la versione di Calico a cui stai effettuando l'aggiornamento.
CALICO_VERSION
Sostituiscilo con la versione a cui stai effettuando l'aggiornamento, ad esempio.v3.29.0
Assicurati di anteporre il file a major.minor.patchv
.kubectl apply --server-side --force-conflicts \ -f https://raw.githubusercontent.com/projectcalico/calico/
CALICO_VERSION
/manifests/operator-crds.yaml -
Esegui per aggiornare la tua distribuzione di Calico.
helm upgrade
Sostituisci CALICO_VERSION con la versione a cui stai effettuando l'aggiornamento, ad esempio.v3.29.0
Crea ilcalico-values.yaml
file dai valori di configurazione che hai usato per installare Calico.helm upgrade calico projectcalico/tigera-operator \ --version
CALICO_VERSION
\ --namespace kube-system \ -f calico-values.yaml
Elimina Calico dai nodi ibridi
-
Esegui il seguente comando per disinstallare i componenti di Calico dal tuo cluster. Tieni presente che la disinstallazione del CNI potrebbe influire sulla salute di nodi e pod e non dovrebbe essere eseguita sui cluster di produzione. Se hai installato Calico in uno spazio dei nomi diverso,
kube-system
modifica lo spazio dei nomi nel comando seguente.helm uninstall calico --namespace kube-system
Nota che le interfacce e le route configurate da Calico non vengono rimosse di default quando rimuovi il CNI dal cluster.
-
Per ripulire i file e le risorse di configurazione su disco, rimuovete i file Calico dalle directory and.
/opt/cni
/etc/cni
-
Per rimuovere Calico CRDs dal tuo cluster, esegui i seguenti comandi.
kubectl get crds -oname | grep "calico" | xargs kubectl delete
kubectl get crds -oname | grep "tigera" | xargs kubectl delete