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 su che si trova 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à.
Inizia a usare il gateway EKS Hybrid Nodes
Questa pagina illustra i prerequisiti, la preparazione dell'ambiente, l'installazione, la verifica e la rimozione del gateway Amazon EKS Hybrid Nodes. Per un'introduzione al gateway e alla sua architettura, consultaGateway Amazon EKS Hybrid Nodes.
Prerequisiti
Prima di installare il gateway Hybrid Nodes, verificate che l'ambiente soddisfi i seguenti requisiti:
-
Cluster EKS con supporto Cilium CNI e VTEP: il cluster EKS deve utilizzare la versione EKS di Cilium come CNI sui nodi ibridi e Cilium VTEP deve essere abilitato. Per ulteriori informazioni, consulta Configurare CNI per il gateway Hybrid Nodes.
-
AWS VPC CNI su nodi cloud: i nodi gateway e gli altri nodi cloud nel cluster devono utilizzare il VPC CNI. AWS Il gateway si basa sul VPC-native routing per inoltrare il traffico tra il VPC e il tunnel VXLAN.
-
Connettività ibrida: è necessaria una connessione privata tra il VPC e l'ambiente locale. Puoi utilizzare AWS Direct Connect, AWS Site-to-Site VPN o una soluzione VPN personalizzata. Per ulteriori informazioni, consulta Preparazione della rete per i nodi ibridi.
-
Traffico VXLAN consentito: i gruppi di sicurezza collegati alle istanze EC2 del gateway devono consentire il traffico UDP in entrata e in uscita sulla porta 8472. Sul lato del nodo ibrido, le regole del firewall locale devono inoltre consentire il traffico della porta UDP 8472 da e verso gli indirizzi IP del nodo gateway.
-
Autorizzazioni IAM per la gestione delle tabelle di routing: il gateway richiede le seguenti azioni EC2 per gestire le tabelle di route VPC:
-
ec2:DescribeRouteTables -
ec2:CreateRoute -
ec2:ReplaceRoute -
ec2:DescribeInstancesPuoi concedere queste autorizzazioni utilizzando uno dei seguenti approcci:
-
-
EKS Auto Mode (se si utilizza la modalità automatica per i nodi gateway): se si prevede di utilizzare EKS Auto Mode per il provisioning dei nodi gateway, la modalità automatica deve essere abilitata sul cluster EKS. Per ulteriori informazioni, consulta Abilitare la modalità EKS Auto.
Preparare i nodi del gateway
Il gateway richiede almeno due nodi EC2 per l'alta disponibilità. Sono supportate due opzioni di configurazione dei nodi per il gateway:
-
Modalità automatica EKS (consigliata)— Il provisioning dei nodi viene eseguito automaticamente utilizzando un comando
NodePooleNodeClass. Source/destination check, labels e taint sono tutti configurati in modo dichiarativo. -
Gruppi di nodi gestiti— Il provisioning dei nodi viene effettuato utilizzando un gruppo di nodi gestiti o nodi autogestiti. Le etichette possono essere configurate tramite l'API del gruppo di nodi gestiti e il source/destination controllo può essere disabilitato utilizzando un modello di avvio personalizzato con dati utente.
Modalità automatica EKS (consigliata)
Quando si utilizza la modalità EKS Auto, è necessario creare una NodePool e NodeClass prima di installare il diagramma Helm. Fornisce NodePool alle istanze EC2 le etichette, le macchie e la configurazione di controllo corrette. source/destination Non è necessario effettuare il provisioning o configurare manualmente i nodi.
Applica le seguenti risorse al tuo cluster, sostituendo i valori segnaposto:
-
YOUR_NODE_ROLE— Il nome del ruolo IAM del nodo utilizzato da EKS Auto Mode per il provisioning dei nodi. Questo è il ruolo che hai configurato (o creato da EKS) quando hai abilitato la modalità automatica sul cluster. Per ulteriori informazioni, consulta Creazione di un ruolo IAM per EKS Auto Mode. -
YOUR_CLUSTER_NAME— Il nome del tuo cluster EKS. -
SUBNET_ID_1,SUBNET_ID_2— ID di sottorete in diverse zone di disponibilità in cui verrà effettuato il provisioning dei nodi gateway.
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: hybrid-gateway spec: advancedNetworking: sourceDestCheck: DisabledPrimaryENI role:YOUR_NODE_ROLEsecurityGroupSelectorTerms: - tags: aws:eks:cluster-name:YOUR_CLUSTER_NAMEsubnetSelectorTerms: - id:SUBNET_ID_1- id:SUBNET_ID_2--- apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: hybrid-gateway spec: template: metadata: labels: hybrid-gateway-node: "true" spec: expireAfter: 336h nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: hybrid-gateway requirements: - key: karpenter.sh/capacity-type operator: In values: - on-demand - key: eks.amazonaws.com/instance-category operator: In values: - c - m - r - key: eks.amazonaws.com/instance-generation operator: Gt values: - "4" - key: kubernetes.io/arch operator: In values: - amd64 - key: kubernetes.io/os operator: In values: - linux taints: - key: hybrid-gateway-node effect: NoSchedule terminationGracePeriod: 24h0m0s disruption: budgets: - nodes: 10% consolidateAfter: 30s consolidationPolicy: WhenEmptyOrUnderutilized
Campi chiave in questa configurazione:
-
advancedNetworking.sourceDestCheck: DisabledPrimaryENI— Disabilita il source/destination controllo EC2 sull'ENI primario del nodo in modo che il gateway possa inoltrare il traffico che non è indirizzato a se stesso. -
taints— Lahybrid-gateway-node: NoSchedulecontaminazione garantisce solo gateway pod con un programma di tolleranza corrispondente su questi nodi. -
labels— L'hybrid-gateway-node: "true"etichetta viene utilizzata dal selettore di nodi del grafico Helm per indirizzare i gateway pod a questi nodi. -
nodeClassRef— Collega il NodePool a NodeClass con la configurazione di controllo. source/destination
Gruppi di nodi gestiti
Quando si utilizzano gruppi di nodi gestiti, è necessario creare un gruppo di nodi dedicato per il gateway con le etichette e i caratteri richiesti e un modello di avvio personalizzato che disabiliti il source/destination controllo all'avvio.
Fase 1: creazione di un modello di avvio
Crea un modello di avvio con dati utente che disabiliti il source/destination controllo sull'ENI primario all'avvio dell'istanza:
# Create the launch template with user data to disable source/dest check USERDATA=$(cat <<'SCRIPT' | base64 -w 0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==BOUNDARY==" --==BOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" \ -H "X-aws-ec2-metadata-token-ttl-seconds: 60") MAC=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/mac) ENI_ID=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ "http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC}/interface-id") REGION=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" \ http://169.254.169.254/latest/meta-data/placement/region) aws ec2 modify-network-interface-attribute \ --network-interface-id "$ENI_ID" \ --no-source-dest-check \ --region "$REGION" --==BOUNDARY==-- SCRIPT ) aws ec2 create-launch-template \ --launch-template-nameYOUR_CLUSTER_NAME-gateway-lt \ --launch-template-data "{\"UserData\":\"${USERDATA}\",\"MetadataOptions\":{\"HttpTokens\":\"required\",\"HttpPutResponseHopLimit\":2}}"
Nota
Il ruolo IAM del nodo deve disporre dell'ec2:ModifyNetworkInterfaceAttributeautorizzazione affinché lo script di dati utente abbia esito positivo. Il formato multipart MIME garantisce che i dati utente vengano eseguiti insieme allo script bootstrap EKS.
Fase 2: Creare il gruppo di nodi gestiti
Crea un gruppo di nodi gestiti dedicato con l'etichetta del gateway, il taint e il modello di avvio del passaggio 1:
aws eks create-nodegroup \ --cluster-nameYOUR_CLUSTER_NAME\ --nodegroup-nameYOUR_CLUSTER_NAME-gateway-nodes \ --subnetsSUBNET_ID_1 SUBNET_ID_2\ --node-roleYOUR_NODE_ROLE_ARN\ --instance-typesINSTANCE_TYPE\ --ami-type AL2023_x86_64_STANDARD \ --scaling-config desiredSize=2,maxSize=2,minSize=2 \ --labels hybrid-gateway-node=true \ --taints "key=hybrid-gateway-node,effect=NO_SCHEDULE" \ --launch-template "name=YOUR_CLUSTER_NAME-gateway-lt,version=1"
Questo crea un gruppo di nodi gestiti a 2 nodi in cui:
-
--labelsimpostahybrid-gateway-node=truein modo che il selettore di nodi del grafico Helm abbia come target questi nodi. -
--taintsaggiunge unaNoSchedulemacchia, quindi solo i gateway pod con un programma di tolleranza corrispondente su questi nodi. -
--launch-templateallega il modello di avvio che source/destination disabilita il controllo all'avvio.
Usa le sottoreti in diverse zone di disponibilità per una disponibilità elevata.
Installa con Helm
Modalità automatica di EKS
Esegui il comando seguente per installare il gateway con EKS Auto Mode:
helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set vpcCIDR=VPC_CIDR\ --set podCIDRs=POD_CIDRS\ --set routeTableIDs=ROUTE_TABLE_IDS
Gruppi di nodi gestiti o nodi autogestiti
Per i gruppi di nodi gestiti o i nodi autogestiti, imposta: autoMode.enabled=false
helm install eks-hybrid-nodes-gateway \ oci://public.ecr.aws/eks/eks-hybrid-nodes-gateway \ --version 1.0.0 \ --namespace eks-hybrid-nodes-gateway \ --create-namespace \ --set autoMode.enabled=false \ --set vpcCIDR=VPC_CIDR\ --set podCIDRs=POD_CIDRS\ --set routeTableIDs=ROUTE_TABLE_IDS
Valori Helm richiesti
I seguenti valori sono obbligatori per tutte le installazioni:
| Valore | Description |
|---|---|
|
|
Il blocco CIDR del tuo cluster EKS VPC (ad esempio, |
|
|
Comma-separated elenco dei POD CIDR utilizzati da Cilium sui nodi ibridi (ad esempio,). |
|
|
Comma-separated elenco degli ID delle tabelle di routing VPC da programmare (ad esempio,). |
Per un elenco completo dei valori configurabili, vedere. Riferimento alla configurazione del gateway Amazon EKS Hybrid Nodes
Verifica dell'installazione
Dopo aver installato il gateway, verificate che sia funzionante e integro.
Controlla lo stato del pod
Verifica che due gateway pod siano in esecuzione:
kubectl get pods -n eks-hybrid-nodes-gateway
Dovresti vedere un risultato simile a:
NAME READY STATUS RESTARTS AGE eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 1/1 Running 0 2m eks-hybrid-nodes-gateway-5d4f6a7b8c-def34 1/1 Running 0 2m
Controlla l'elezione del leader
Verifica che un gruppo abbia acquisito il contratto di locazione per l'elezione del leader:
kubectl get lease -n eks-hybrid-nodes-gateway
L'output mostra il leader attuale nella HOLDER colonna:
NAME HOLDER AGE hybrid-gateway-leader eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 2m
Controlla l'endpoint di integrità
Verifica che l'endpoint di integrità stia rispondendo sul pod leader utilizzando il port-forwarding:
kubectl port-forward -n eks-hybrid-nodes-gatewayLEADER_POD_NAME8088:8088 & curl -s http://localhost:8088/healthz
Un gateway integro restituisce una risposta HTTP 200.
Verifica le voci della tabella di routing di VPC
Nella console Amazon VPC o utilizzando la AWS CLI, verifica che le tabelle di routing VPC contengano voci per i CIDR del pod ibrido che puntano all'ENI dell'istanza del gateway leader:
aws ec2 describe-route-tables \ --route-table-idsROUTE_TABLE_ID\ --query "RouteTables[].Routes[?DestinationCidrBlock=='POD_CIDR']"
Ogni pod CIDR ibrido deve avere un percorso NetworkInterfaceId impostato sull'ENI primario dell'istanza leader.
Disinstallazione
Per rimuovere il gateway Hybrid Nodes, esegui:
helm uninstall eks-hybrid-nodes-gateway --namespace eks-hybrid-nodes-gateway
Nota
La disinstallazione del grafico Helm non rimuove automaticamente le voci della tabella di routing VPC create dal gateway. Dopo la disinstallazione, elimina manualmente i percorsi per i CIDR del tuo pod ibrido dalle tabelle di routing del VPC per evitare di indirizzare il traffico verso le istanze che non eseguono più il gateway. Puoi rimuovere i percorsi utilizzando la CLI: AWS
aws ec2 delete-route \ --route-table-idROUTE_TABLE_ID\ --destination-cidr-blockPOD_CIDR
Fasi successive
-
Riferimento alla configurazione del gateway Amazon EKS Hybrid Nodes— Personalizza i valori Helm, i flag CLI e i parametri di elezione dei leader.
-
Operazioni del gateway Amazon EKS Hybrid Nodes— Monitora il gateway, comprendi il comportamento del failover e pianifica la scalabilità.
-
Risoluzione dei problemi relativi al gateway Amazon EKS Hybrid Nodes— Diagnostica e risolvi i problemi più comuni.