Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Preparazione della rete per i nodi ibridi
Questo argomento fornisce una panoramica della configurazione di rete che devi adottare prima di creare un cluster Amazon EKS e collegare nodi ibridi. Questa guida presuppone che tu abbia soddisfatto i prerequisiti per la connettività di rete ibrida utilizzando VPN Site-to-Site di AWS, Direct Connect di AWS o la tua soluzione VPN.
Configurazione di rete on-premises
Requisiti minimi di rete
Per un’esperienza ottimale, ti consigliamo di disporre di una connettività di rete affidabile di almeno 100 Mbps e una latenza massima di 200 ms di andata e ritorno per la connessione dei nodi ibridi alla Regione AWS. Questa è una guida generale adatta alla maggior parte dei casi d’uso, ma non è un requisito fondamentale. I requisiti di larghezza di banda e latenza possono variare in base al numero di nodi ibridi e alle caratteristiche del carico di lavoro, come la dimensione dell’immagine dell’applicazione, l’elasticità dell’applicazione, le configurazioni di monitoraggio e registrazione, e le dipendenze delle applicazioni dall’accesso ai dati archiviati in altri servizi AWS. Ti consigliamo di eseguire test con applicazioni e ambienti prima di passare all’implementazione per verificare che la configurazione di rete soddisfi i requisiti per i carichi di lavoro.
CIDR per nodi e pod on-premises
Identifica i CIDR di nodi e pod che utilizzerai per i nodi ibridi e i carichi di lavoro in esecuzione su di essi. Il CIDR dei nodi viene allocato dalla rete on-premises e quello dei pod viene allocato dalla Container Network Interface (CNI) se utilizzi una rete overlay per la CNI. I CIDR dei nodi e i CIDR dei pod on-premises vengono trasmessi come input quando crei il cluster EKS con i campi RemoteNodeNetwork e RemotePodNetwork. I CIDR dei nodi on-premises devono essere instradabili sulla rete on-premises. Per ulteriori informazioni sull’instradabilità del CIDR dei pod on-premises, consulta la sezione seguente.
Gli intervalli CIDR dei nodi e dei pod on-premises devono soddisfare i seguenti requisiti:
-
Essere compresi in uno degli intervalli RFC-1918
IPv4seguenti:10.0.0.0/8,172.16.0.0/12o192.168.0.0/16. -
Non si sovrappongano tra loro, né con il CIDR del VPC per il tuo cluster EKS né con il CIDR
IPv4del tuo servizio Kubernetes.
Instradamento della rete pod on-premises
Quando si utilizza EKS Hybrid Nodes, in genere consigliamo di rendere i CIDR dei pod on-premises instradabili sulla rete on-premises per consentire la comunicazione e la funzionalità complete del cluster tra ambienti cloud e on-premises.
Reti di pod instradabili
Se riesci a rendere la tua rete di pod instradabile su quella on-premises, segui le istruzioni riportate di seguito.
-
Configura il campo
RemotePodNetworkper il cluster EKS con il CIDR del pod on-premises, le tabelle di routing del VPC con il CIDR del pod on-premises e il gruppo di sicurezza del cluster EKS con il CIDR del pod on-premises. -
Esistono diverse tecniche che puoi utilizzare per rendere il CIDR del pod on-premises instradabile sulla tua rete on-premises, tra cui Border Gateway Protocol (BGP), route statiche o altre soluzioni di instradamento personalizzate. Il BGP è la soluzione consigliata in quanto è più scalabile e facile da gestire rispetto alle soluzioni alternative che richiedono una configurazione del percorso personalizzata o manuale. AWS supporta le funzionalità BGP di Cilium e Calico per la pubblicità dei CIDR dei pod, consulta Configurazione della CNI per nodi ibridi e CIDR dei pod remoti instradabili per ulteriori informazioni.
-
I webhook possono essere eseguiti su nodi ibridi poiché il piano di controllo EKS è in grado di comunicare con gli indirizzi IP dei pod assegnati ai webhook.
-
I carichi di lavoro in esecuzione su nodi cloud sono in grado di comunicare direttamente con i carichi di lavoro in esecuzione su nodi ibridi nello stesso cluster EKS.
-
Altri servizi AWS, come l’Application Load Balancers di AWS e il Servizio gestito da Amazon per Prometheus, sono in grado di comunicare con i carichi di lavoro in esecuzione su nodi ibridi per bilanciare il traffico di rete e le metriche dei pod.
Reti di pod non instradabili
Se non riesci a rendere instradabili le reti di pod su quella on-premises, segui le istruzioni riportate di seguito.
-
I webhook non possono essere eseguiti su nodi ibridi perché richiedono la connettività dal piano di controllo EKS agli indirizzi IP dei pod assegnati ai webhook. In questo caso, ti consigliamo di eseguire webhook su nodi cloud nello stesso cluster EKS dei nodi ibridi, consulta Configurazione di webhook per nodi ibridi per ulteriori informazioni.
-
I carichi di lavoro in esecuzione sui nodi cloud non sono in grado di comunicare direttamente con i carichi di lavoro in esecuzione su nodi ibridi quando si utilizza la CNI del VPC per i nodi cloud e Cilium o Calico per i nodi ibridi.
-
Utilizza la Distribuzione del traffico del servizio per mantenere il traffico locale per la zona da cui proviene. Per ulteriori informazioni sulla Distribuzione del traffico del servizio, consulta Configurazione della distribuzione del traffico del servizio.
-
Configura la CNI per utilizzare la mascheratura in uscita o la Network Address Translation (NAT) per il traffico dei pod in uscita dagli host on-premises. Ciò è abilitato per impostazione predefinita in Cilium. Calico necessita che
natOutgoingsia impostato sutrue. -
Altri servizi AWS, come l’Application Load Balancers di AWS e il Servizio gestito da Amazon per Prometheus, non sono in grado di comunicare con i carichi di lavoro in esecuzione su nodi ibridi.
Accesso richiesto durante l’installazione e l’aggiornamento del nodo ibrido
Devi avere accesso ai seguenti domini durante il processo di installazione in cui installi le dipendenze dei nodi ibridi sui tuoi host. Questa procedura può essere eseguita una sola volta durante la creazione delle immagini del sistema operativo oppure può essere eseguita su ciascun host in Passaggio di runtime. Ciò include l’installazione iniziale e l’aggiornamento della versione Kubernetes dei nodi ibridi.
Alcuni pacchetti vengono installati utilizzando il gestore di pacchetti predefinito del sistema operativo. Per AL2023 e RHEL viene utilizzato il comando yum per installare containerd, ca-certificates, iptables e amazon-ssm-agent. Per Ubuntu viene utilizzato apt per installare containerd, ca-certificates e iptables, e viene utilizzato snap per installare amazon-ssm-agent.
| Componente | URL | Protocollo | Porta |
|---|---|---|---|
|
Artefatti del nodo EKS (S3) |
https://hybrid-assets.eks.amazonaws.com |
HTTPS |
443 |
|
https://eks. |
HTTPS |
443 |
|
|
https://api.ecr. |
HTTPS |
443 |
|
|
Endpoint EKS ECR |
Consulta Visualizza i registri delle immagini del container per i componenti aggiuntivi di Amazon EKS per gli endpoint regionali. |
HTTPS |
443 |
|
Endpoint binario SSM 1 |
https://amazon-ssm- |
HTTPS |
443 |
|
https://ssm. |
HTTPS |
443 |
|
|
Endpoint binario IAM Anywhere 2 |
https://rolesanywhere.amazonaws.com |
HTTPS |
443 |
|
https://rolesanywhere. |
HTTPS |
443 |
|
|
Endpoint del gestore di pacchetti del sistema operativo |
Gli endpoint dei repository di pacchetti sono specifici del sistema operativo e possono variare in base all’area geografica. |
HTTPS |
443 |
Nota
1 L’accesso agli endpoint SSM di AWS è richiesto solo se utilizzi attivazioni ibride SSM di AWS per il tuo provider di credenziali IAM on-premises.
2 L’accesso agli endpoint IAM di AWS è richiesto solo se utilizzi IAM Roles Anywhere di AWS per il tuo provider di credenziali IAM on-premises.
Accesso richiesto per le operazioni in corso del cluster
Per le operazioni in corso del cluster è necessario il seguente accesso alla rete per il firewall on-premises.
Importante
A seconda della CNI scelta, devi configurare ulteriori regole di accesso alla rete per le porte della CNI. Consulta Cilium documentation
| Tipo | Protocollo | Direzione | Porta | Origine | Destinazione | Utilizzo |
|---|---|---|---|---|---|---|
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del nodo remoto |
IP del cluster EKS 1 |
Da kubelet al server API Kubernetes |
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del pod remoto |
IP del cluster EKS 1 |
Da pod al server API Kubernetes |
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del nodo remoto |
Aggiornamento delle credenziali delle attivazioni ibride SSM e heartbeat SSM ogni 5 minuti |
|
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del nodo remoto |
Aggiornamento delle credenziali di IAM Roles Anywhere |
|
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del pod remoto |
Da pod a endpoint STS, richiesto solo per IRSA |
|
|
HTTPS |
TCP |
In uscita |
443 |
CIDR del nodo remoto |
Da nodo a endpoint di autenticazione Amazon EKS, richiesto solo per Amazon EKS Pod Identity |
|
|
HTTPS |
TCP |
In entrata |
10250 |
IP del cluster EKS 1 |
CIDR del nodo remoto |
Da server API Kubernetes a kubelet |
|
HTTPS |
TCP |
In entrata |
Porte del webhook |
IP del cluster EKS 1 |
CIDR del pod remoto |
Da server API Kubernetes a webhook |
|
HTTPS |
TCP, UDP |
Inbound, Outbound |
53 |
CIDR del pod remoto |
CIDR del pod remoto |
Da pod a CoreDNS. Se esegui almeno una replica di CoreDNS nel cloud, devi consentire il traffico DNS al VPC su cui è in esecuzione CoreDNS. |
|
Definito dall’utente |
Definito dall’utente |
Inbound, Outbound |
Porte dell’app |
CIDR del pod remoto |
CIDR del pod remoto |
Da pod a pod |
Nota
1 Gli IP del cluster EKS. Consulta la sezione seguente sulle interfacce di rete elastiche di Amazon EKS.
Interfacce di rete elastiche di Amazon EKS
Amazon EKS collega le interfacce di rete alle sottoreti del VPC che passi durante la creazione del cluster per abilitare la comunicazione tra il piano di controllo EKS e il tuo VPC. Dopo la creazione del cluster, le interfacce di rete create da Amazon EKS sono reperibili nella console Amazon EC2 o con la CLI di AWS. Le interfacce di rete originali vengono eliminate e vengono create di nuove quando vengono applicate modifiche al cluster EKS, ad esempio gli aggiornamenti delle versioni di Kubernetes. Puoi limitare l’intervallo IP per le interfacce di rete Amazon EKS utilizzando dimensioni di sottoreti vincolate per le sottoreti passate durante la creazione del cluster, il che semplifica la configurazione del firewall on-premises per consentire la connettività inbound/outbound a questo set di IP noto e vincolato. Per verificare in quali sottoreti vengono create le interfacce di rete, puoi limitare il numero di sottoreti specificate a due quando crei un cluster o puoi aggiornare le sottoreti dopo aver creato il cluster.
Le interfacce di rete fornite da Amazon EKS hanno una descrizione del formato Amazon EKS . Guarda l’esempio seguente di un comando CLI di AWS che puoi usare per trovare gli indirizzi IP delle interfacce di rete fornite da Amazon EKS. Sostituisci your-cluster-name
VPC_ID con l’ID del VPC che passi durante la creazione del cluster.
aws ec2 describe-network-interfaces \ --query 'NetworkInterfaces[?(VpcId ==VPC_ID&& contains(Description,Amazon EKS))].PrivateIpAddress'
Configurazione di VPC e sottoreti di AWS
Ai cluster con nodi ibridi si applicano gli attuali Requisiti per VPC e sottoreti per Amazon EKS. Inoltre, il VPC del tuo CIDR non può sovrapporsi ai CIDR dei nodi e dei pod on-premises. Devi configurare i percorsi nella tabella di routing VPC per i CIDR dei nodi on-premises e, facoltativamente, dei pod. Questi percorsi devono essere configurati per indirizzare il traffico verso il gateway utilizzato per la connettività di rete ibrida, che in genere è un gateway privato virtuale (VGW) o un gateway di transito (TGW). Se utilizzi TGW o VGW per connettere il tuo VPC all’ambiente on-premises, devi creare un allegato TGW o VGW per il tuo VPC. Il VPC deve supportare il nome host DNS e la risoluzione DNS.
Nei passaggi seguenti viene utilizzata la CLI di AWS. Puoi anche creare queste risorse in Console di gestione AWS o con altre interfacce come CloudFormation di AWS, CDK di AWS o Terraform.
Passaggio 1: creazione di un VPC
-
Per creare un nuovo VPC, esegui il comando seguente. Sostituisci
VPC_CIDRcon un intervallo CIDRIPv4RFC-1918 (privato) o non RFC-1918 (pubblico) (ad esempio10.0.0.0/16). Nota: la risoluzione DNS, che è un requisito EKS, è abilitata per impostazione predefinita per il VPC.aws ec2 create-vpc --cidr-blockVPC_CIDR -
Abilita i nomi degli host DNS per il tuo VPC. Ricorda, la risoluzione DNS è abilitata per impostazione predefinita per il VPC. Sostituisci
VPC_IDcon l’ID del VPC creato nel passaggio precedente.aws ec2 modify-vpc-attribute --vpc-idVPC_ID--enable-dns-hostnames
Passaggio 2: creazione di sottoreti
Crea almeno due sottoreti. Amazon EKS utilizza queste sottoreti per le interfacce di rete del cluster. Per maggiori informazioni, consulta Subnets requirements and considerations.
-
Puoi trovare le zone di disponibilità per una Regione AWS con il seguente comando. Sostituisci
us-west-2con la tua regione.aws ec2 describe-availability-zones \ --query 'AvailabilityZones[?(RegionName ==us-west-2)].ZoneName' -
Crea una sottorete. Sostituisci
VPC_IDcon l’ID del VPC. SostituisciSUBNET_CIDRcon l’intervallo CIDR per la sottorete (ad esempio, 10.0.1.0/24). SostituisciAZcon la zona di disponibilità in cui verrà creata la sottorete (ad esempio us-west-2a). Le sottoreti che crei devono trovarsi in almeno due zone di disponibilità differenti.aws ec2 create-subnet \ --vpc-idVPC_ID\ --cidr-blockSUBNET_CIDR\ --availability-zoneAZ
(Facoltativo) Passaggio 3: collegamento del VPC con il gateway di transito (TGW) di Amazon VPC o il gateway privato virtuale (VGW) Direct Connect di AWS
Se utilizzi un TGW o un VGW, collega il tuo VPC al TGW o al VGW. Per ulteriori informazioni, consulta Amazon VPC attachments in Amazon VPC Transit Gateways o AWS Direct Connect virtual private gateway associations.
Gateway di transito
Esegui il comando seguente per collegare un gateway di transito. Sostituisci VPC_ID con l’ID del VPC. Sostituisci SUBNET_ID1 e SUBNET_ID2 con gli ID delle sottoreti create nel passaggio precedente. Sostituisci TGW_ID con l’ID del TGW.
aws ec2 create-transit-gateway-vpc-attachment \ --vpc-idVPC_ID\ --subnet-idsSUBNET_ID1 SUBNET_ID2\ --transit-gateway-idTGW_ID
Gateway virtuale privato
Esegui il comando seguente per collegare un Gateway di transito. Sostituisci VPN_ID con l’ID del VGW. Sostituisci VPC_ID con l’ID del VPC.
aws ec2 attach-vpn-gateway \ --vpn-gateway-idVPN_ID\ --vpc-idVPC_ID
(Facoltativo) Passaggio 4: creazione di una tabella di routing
Puoi modificare la tabella di routing principale per il VPC o creare una tabella di routing personalizzata. I passaggi seguenti creano una tabella di routing personalizzata con le rotte verso i CIDR di nodi e pod on-premises. Per ulteriori informazioni, consulta le Tabelle di routing delle sottoreti. Sostituisci VPC_ID con l’ID del VPC.
aws ec2 create-route-table --vpc-idVPC_ID
Passaggio 5: creazione di percorsi per nodi e pod on-premises
Crea percorsi nella tabella di routing per ciascuno dei tuoi nodi remoti on-premises. Puoi modificare la tabella di routing principale per il VPC o utilizzare la tabella di routing personalizzata creata nel passaggio precedente.
Gli esempi seguenti mostrano come creare percorsi per i CIDR di nodi e pod on-premises. Negli esempi viene utilizzato un gateway di transito (TGW) per connettere il VPC all’ambiente on-premises. Se disponi di più CIDR di nodi e pod on-premises, ripeti i passaggi per ciascun CIDR.
-
Se utilizzi un gateway Internet o un gateway privato virtuale (VGW), sostituisci
--transit-gateway-idcon--gateway-id. -
Sostituisci
RT_IDcon l’ID della tabella di routing creata nel passaggio precedente. -
Sostituisci
REMOTE_NODE_CIDRcon l’intervallo CIDR che utilizzerai per i tuoi nodi ibridi. -
Sostituisci
REMOTE_POD_CIDRcon l’intervallo CIDR che utilizzerai per i pod in esecuzione su nodi ibridi. L’intervallo CIDR dei pod corrisponde alla configurazione Container Networking Interface (CNI), che comunemente utilizza una rete overlay on-premises. Per ulteriori informazioni, consulta Configurazione della CNI per nodi ibridi. -
Sostituisci
TGW_IDcon l’ID del TGW.
Rete di nodi remoti
aws ec2 create-route \ --route-table-idRT_ID\ --destination-cidr-blockREMOTE_NODE_CIDR\ --transit-gateway-idTGW_ID
Rete di pod remoti
aws ec2 create-route \ --route-table-idRT_ID\ --destination-cidr-blockREMOTE_POD_CIDR\ --transit-gateway-idTGW_ID
(Facoltativo) Passaggio 6: associazione delle sottoreti alla tabella di routing
Se hai creato una tabella di routing personalizzata nel passaggio precedente, associa ciascuna delle sottoreti che hai creato nel passaggio precedente alla tua tabella di routing personalizzata. Se stai modificando la tabella di routing principale del VPC, le sottoreti vengono automaticamente associate alla tabella di routing principale del VPC e puoi saltare questo passaggio.
Esegui questo comando per ciascuna sottorete creata nei passaggi precedenti. Sostituisci RT_ID con la tabella di routing creata nel passaggio precedente. Sostituisci SUBNET_ID con l’ID di una sottorete.
aws ec2 associate-route-table --route-table-idRT_ID--subnet-idSUBNET_ID
Configurazione del gruppo di sicurezza del cluster
Il seguente accesso per il gruppo di sicurezza del cluster EKS è necessario per le operazioni in corso del cluster. Amazon EKS crea automaticamente le regole dei gruppi di sicurezza in entrata richieste per i nodi ibridi quando crei o aggiorni il cluster con reti di nodi e pod remoti configurate. Poiché i gruppi di sicurezza consentono tutto il traffico in uscita per impostazione predefinita, Amazon EKS non modifica automaticamente le regole in uscita del gruppo di sicurezza del cluster per i nodi ibridi. Se desideri personalizzare il gruppo di sicurezza del cluster, puoi limitare il traffico alle regole riportate nella tabella seguente.
| Tipo | Protocollo | Direzione | Porta | Origine | Destinazione | Utilizzo |
|---|---|---|---|---|---|---|
|
HTTPS |
TCP |
In entrata |
443 |
CIDR del nodo remoto |
N/D |
Da Kubelet al server API Kubernetes |
|
HTTPS |
TCP |
In entrata |
443 |
CIDR del pod remoto |
N/D |
Pod che richiedono l’accesso al server API K8s quando il CNI non utilizza NAT per il traffico dei pod. |
|
HTTPS |
TCP |
In uscita |
10250 |
N/D |
CIDR del nodo remoto |
Da server API Kubernetes a Kubelet |
|
HTTPS |
TCP |
In uscita |
Porte del webhook |
N/D |
CIDR del pod remoto |
Da server API Kubernetes a webhook (se esegui webhook su nodi ibridi) |
Importante
Limiti delle regole dei gruppi di sicurezza: per impostazione predefinita, i gruppi di sicurezza di Amazon EC2 hanno un massimo di 60 regole in entrata. Le regole in entrata del gruppo di sicurezza potrebbero non essere applicabili se il gruppo di sicurezza del cluster si avvicina a questo limite. In questo caso, potrebbe essere necessario aggiungere manualmente le regole in entrata mancanti.
Responsabilità di pulizia CIDR: se rimuovi reti di nodi o pod remoti dai cluster EKS, quest’ultimo non rimuove automaticamente le regole del gruppo di sicurezza corrispondenti. È responsabilità dell’utente rimuovere manualmente le reti di nodi o pod remoti non utilizzate dalle regole del gruppo di sicurezza.
Per ulteriori informazioni sul gruppo di sicurezza del cluster creato da Amazon EKS, consulta Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster.
(Facoltativo) Configurazione manuale del gruppo di sicurezza
Se devi creare gruppi di sicurezza aggiuntivi o modificare le regole create automaticamente, puoi utilizzare i seguenti comandi come riferimento. Per impostazione predefinita, il comando seguente crea un gruppo di sicurezza che consente tutti gli accessi in uscita. Puoi limitare l’accesso in uscita in modo da includere solo le regole precedenti. Se stai pianificando una limitazione delle regole, ti consigliamo di testare accuratamente la connettività delle applicazioni e dei pod prima di applicare le regole modificate a un cluster di produzione.
-
Nel primo comando, sostituisci
SG_NAMEcon un nome per il tuo gruppo di sicurezza -
Nel primo comando, sostituisci
VPC_IDcon l’ID del VPC creato nel passaggio precedente -
Nel secondo comando, sostituisci
SG_IDcon l’ID del gruppo di sicurezza creato nel primo comando -
Nel secondo comando, sostituisci
REMOTE_NODE_CIDReREMOTE_POD_CIDRcon i valori per i nodi ibridi e la rete on-premises.
aws ec2 create-security-group \ --group-nameSG_NAME\ --description "security group for hybrid nodes" \ --vpc-idVPC_ID
aws ec2 authorize-security-group-ingress \ --group-idSG_ID\ --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'