Preparazione della rete per i nodi ibridi - Amazon EKS

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.

Connettività di rete a nodi ibridi.

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:

  1. Essere compresi in uno degli intervalli RFC-1918 IPv4 seguenti: 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16.

  2. Non si sovrappongano tra loro, né con il CIDR del VPC per il tuo cluster EKS né con il CIDR IPv4 del 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.

  1. Configura il campo RemotePodNetwork per 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.

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

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

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

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

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

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

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

  4. 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 natOutgoing sia impostato su true.

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

Endpoint del servizio EKS

https://eks.region.amazonaws.com

HTTPS

443

Endpoint del servizio ECR

https://api.ecr.region.amazonaws.com

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-region.s3.region.amazonaws.com

HTTPS

443

Endpoint del servizio SSM 1

https://ssm.region.amazonaws.com

HTTPS

443

Endpoint binario IAM Anywhere 2

https://rolesanywhere.amazonaws.com

HTTPS

443

Endpoint del servizio IAM Anywhere 2

https://rolesanywhere.region.amazonaws.com

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 e Calico documentation per i dettagli.

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

Endpoint del servizio SSM

Aggiornamento delle credenziali delle attivazioni ibride SSM e heartbeat SSM ogni 5 minuti

HTTPS

TCP

In uscita

443

CIDR del nodo remoto

Endpoint del servizio IAM Anywhere

Aggiornamento delle credenziali di IAM Roles Anywhere

HTTPS

TCP

In uscita

443

CIDR del pod remoto

Endpoint regionali STS

Da pod a endpoint STS, richiesto solo per IRSA

HTTPS

TCP

In uscita

443

CIDR del nodo remoto

Endpoint del servizio di autenticazione Amazon EKS

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 your-cluster-name . 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 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

  1. Per creare un nuovo VPC, esegui il comando seguente. Sostituisci VPC_CIDR con un intervallo CIDR IPv4 RFC-1918 (privato) o non RFC-1918 (pubblico) (ad esempio 10.0.0.0/16). Nota: la risoluzione DNS, che è un requisito EKS, è abilitata per impostazione predefinita per il VPC.

    aws ec2 create-vpc --cidr-block VPC_CIDR
  2. Abilita i nomi degli host DNS per il tuo VPC. Ricorda, la risoluzione DNS è abilitata per impostazione predefinita per il VPC. Sostituisci VPC_ID con l’ID del VPC creato nel passaggio precedente.

    aws ec2 modify-vpc-attribute --vpc-id VPC_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.

  1. Puoi trovare le zone di disponibilità per una Regione AWS con il seguente comando. Sostituisci us-west-2 con la tua regione.

    aws ec2 describe-availability-zones \ --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
  2. Crea una sottorete. Sostituisci VPC_ID con l’ID del VPC. Sostituisci SUBNET_CIDR con l’intervallo CIDR per la sottorete (ad esempio, 10.0.1.0/24). Sostituisci AZ con 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-id VPC_ID \ --cidr-block SUBNET_CIDR \ --availability-zone AZ

(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-id VPC_ID \ --subnet-ids SUBNET_ID1 SUBNET_ID2 \ --transit-gateway-id TGW_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-id VPN_ID \ --vpc-id VPC_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-id VPC_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-id con --gateway-id.

  • Sostituisci RT_ID con l’ID della tabella di routing creata nel passaggio precedente.

  • Sostituisci REMOTE_NODE_CIDR con l’intervallo CIDR che utilizzerai per i tuoi nodi ibridi.

  • Sostituisci REMOTE_POD_CIDR con 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_ID con l’ID del TGW.

Rete di nodi remoti

aws ec2 create-route \ --route-table-id RT_ID \ --destination-cidr-block REMOTE_NODE_CIDR \ --transit-gateway-id TGW_ID

Rete di pod remoti

aws ec2 create-route \ --route-table-id RT_ID \ --destination-cidr-block REMOTE_POD_CIDR \ --transit-gateway-id TGW_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-id RT_ID --subnet-id SUBNET_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_NAME con un nome per il tuo gruppo di sicurezza

  • Nel primo comando, sostituisci VPC_ID con l’ID del VPC creato nel passaggio precedente

  • Nel secondo comando, sostituisci SG_ID con l’ID del gruppo di sicurezza creato nel primo comando

  • Nel secondo comando, sostituisci REMOTE_NODE_CIDR e REMOTE_POD_CIDR con i valori per i nodi ibridi e la rete on-premises.

aws ec2 create-security-group \ --group-name SG_NAME \ --description "security group for hybrid nodes" \ --vpc-id VPC_ID
aws ec2 authorize-security-group-ingress \ --group-id SG_ID \ --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'