Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Démarrez avec la passerelle EKS Hybrid Nodes
Cette page décrit les prérequis, la préparation de l'environnement, l'installation, la vérification et la suppression de la passerelle Amazon EKS Hybrid Nodes. Pour une présentation de la passerelle et de son architecture, consultezPasserelle Amazon EKS Hybrid Nodes.
Conditions préalables
Avant d'installer la passerelle Hybrid Nodes, vérifiez que votre environnement répond aux exigences suivantes :
-
Cluster EKS avec support Cilium CNI et VTEP : votre cluster EKS doit utiliser la version EKS de Cilium comme CNI sur les nœuds hybrides, et Cilium VTEP doit être activé. Pour de plus amples informations, veuillez consulter Configurer le CNI pour la passerelle Hybrid Nodes.
-
AWS VPC CNI sur les nœuds cloud : les nœuds de passerelle et les autres nœuds cloud du cluster doivent utiliser le AWS VPC CNI. La passerelle repose sur le VPC-native routage pour transférer le trafic entre le VPC et le tunnel VXLAN.
-
Connectivité hybride : une connexion privée entre votre VPC et votre environnement sur site est requise. Vous pouvez utiliser AWS Direct Connect, AWS Site-to-Site un VPN ou votre propre solution VPN. Pour de plus amples informations, veuillez consulter Préparer la mise en réseau pour les nœuds hybrides.
-
Trafic VXLAN autorisé : les groupes de sécurité attachés aux instances EC2 de la passerelle doivent autoriser le trafic UDP entrant et sortant sur le port 8472. Du côté des nœuds hybrides, les règles de pare-feu sur site doivent également autoriser le trafic du port UDP 8472 à destination et en provenance des adresses IP des nœuds de passerelle.
-
Autorisations IAM pour la gestion des tables de routage : la passerelle nécessite les actions EC2 suivantes pour gérer les tables de routage VPC :
-
ec2:DescribeRouteTables -
ec2:CreateRoute -
ec2:ReplaceRoute -
ec2:DescribeInstancesVous pouvez accorder ces autorisations de l'une des manières suivantes :
-
-
Mode automatique EKS (si vous utilisez le mode automatique pour les nœuds de passerelle) : si vous prévoyez d'utiliser le mode automatique EKS pour provisionner les nœuds de passerelle, le mode automatique doit être activé sur votre cluster EKS. Pour plus d'informations, voir Activer le mode automatique EKS.
Préparer les nœuds de passerelle
La passerelle nécessite au moins deux nœuds EC2 pour une haute disponibilité. Deux options de configuration de nœud sont prises en charge pour la passerelle :
-
Mode automatique EKS (recommandé)— Les nœuds sont provisionnés automatiquement à l'aide d'un
NodePooletNodeClass. Source/destination check, labels et taints sont tous configurés de manière déclarative. -
Groupes de nœuds gérés— Vous approvisionnez des nœuds à l'aide d'un groupe de nœuds gérés ou de nœuds autogérés. Les étiquettes peuvent être configurées via l'API du groupe de nœuds géré, et la source/destination vérification peut être désactivée à l'aide d'un modèle de lancement personnalisé contenant des données utilisateur.
Mode automatique EKS (recommandé)
Lorsque vous utilisez le mode automatique EKS, vous devez créer un NodePool et NodeClass avant d'installer la carte Helm. Il NodePool fournit aux instances EC2 les étiquettes, les teintes et la configuration de source/destination vérification appropriées. Il n'est pas nécessaire de provisionner ou de configurer les nœuds manuellement.
Appliquez les ressources suivantes à votre cluster, en remplaçant les valeurs d'espace réservé :
-
YOUR_NODE_ROLE— Nom du rôle IAM de nœud utilisé par EKS Auto Mode pour provisionner les nœuds. Il s'agit du rôle que vous avez configuré (ou créé par EKS) lorsque vous avez activé le mode automatique sur le cluster. Pour plus d'informations, voir Création d'un rôle IAM de nœud pour le mode automatique EKS. -
YOUR_CLUSTER_NAME— Le nom de votre cluster EKS. -
SUBNET_ID_1,SUBNET_ID_2— Identifiants de sous-réseau dans différentes zones de disponibilité où les nœuds de passerelle seront provisionnés.
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
Champs clés de cette configuration :
-
advancedNetworking.sourceDestCheck: DisabledPrimaryENI— Désactive le source/destination contrôle EC2 sur l'ENI principal du nœud afin que la passerelle puisse transférer le trafic qui ne s'adresse pas à elle-même. -
taints— Cettehybrid-gateway-node: NoSchedulealtération garantit uniquement les pods de passerelle avec un calendrier de tolérance correspondant sur ces nœuds. -
labels— L'hybrid-gateway-node: "true"étiquette est utilisée par le sélecteur de nœuds de la carte Helm pour cibler les pods de passerelle vers ces nœuds. -
nodeClassRef— Lie le NodePool à la configuration NodeClass avec le source/destination check.
Groupes de nœuds gérés
Lorsque vous utilisez des groupes de nœuds gérés, créez un groupe de nœuds dédié pour la passerelle avec les étiquettes et les couleurs requises et un modèle de lancement personnalisé qui désactive la source/destination vérification au lancement.
Étape 1 : créer un modèle de lancement
Créez un modèle de lancement avec les données utilisateur qui désactive la source/destination vérification de l'ENI principal au démarrage de l'instance :
# 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}}"
Note
Le rôle IAM du nœud doit être ec2:ModifyNetworkInterfaceAttribute autorisé pour que le script de données utilisateur réussisse. Le format MIME en plusieurs parties garantit que les données utilisateur s'exécutent parallèlement au script d'amorçage EKS.
Étape 2 : Création du groupe de nœuds géré
Créez un groupe de nœuds gérés dédié avec l'étiquette de passerelle, l'étiquette et le modèle de lancement de l'étape 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"
Cela crée un groupe de nœuds gérés à 2 nœuds dans lequel :
-
--labelsdéfinithybrid-gateway-node=truepour que le sélecteur de nœuds de la carte Helm cible ces nœuds. -
--taintsajoute un inconvénient à ceNoScheduleque seuls les pods de passerelle avec un calendrier de tolérance correspondant soient utilisés sur ces nœuds. -
--launch-templatejoint le modèle de lancement qui désactive la source/destination vérification au démarrage.
Utilisez des sous-réseaux dans différentes zones de disponibilité pour une haute disponibilité.
Installer avec Helm
Mode automatique EKS
Exécutez la commande suivante pour installer la passerelle avec le mode automatique EKS :
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
Groupes de nœuds gérés ou nœuds autogérés
Pour les groupes de nœuds gérés ou les nœuds autogérés, définissez 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
Valeurs Helm requises
Les valeurs suivantes sont requises pour toutes les installations :
| Value | Description |
|---|---|
|
|
Le bloc CIDR de votre VPC de cluster EKS (par exemple, |
|
|
Comma-separated liste des CIDR de pod utilisés par Cilium sur les nœuds hybrides (par exemple,). |
|
|
Comma-separated liste des ID de table de routage VPC à programmer (par exemple, |
Pour une liste complète des valeurs configurables, consultezRéférence de configuration de la passerelle Amazon EKS Hybrid Nodes.
Vérifier l'installation
Après avoir installé la passerelle, vérifiez qu'elle fonctionne et qu'elle est saine.
Vérifier l'état du pod
Vérifiez que deux modules de passerelle sont en cours d'exécution :
kubectl get pods -n eks-hybrid-nodes-gateway
Vous devriez voir une sortie similaire à :
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
Vérifiez l'élection du chef
Vérifiez qu'un groupe a acquis le contrat de location pour l'élection du leader :
kubectl get lease -n eks-hybrid-nodes-gateway
La sortie indique le leader actuel de la HOLDER colonne :
NAME HOLDER AGE hybrid-gateway-leader eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 2m
Vérifier l'état de santé
Vérifiez que le terminal d'intégrité répond sur le pod leader à l'aide de la redirection de port :
kubectl port-forward -n eks-hybrid-nodes-gatewayLEADER_POD_NAME8088:8088 & curl -s http://localhost:8088/healthz
Une passerelle saine renvoie une réponse HTTP 200.
Vérifier les entrées de la table de routage VPC
Dans la console Amazon VPC ou à l'aide de l' AWS interface de ligne de commande, vérifiez que vos tables de routage VPC contiennent des entrées pour les CIDR du pod hybride pointant vers l'ENI de l'instance de passerelle principale :
aws ec2 describe-route-tables \ --route-table-idsROUTE_TABLE_ID\ --query "RouteTables[].Routes[?DestinationCidrBlock=='POD_CIDR']"
Chaque CIDR de pod hybride doit avoir une route avec l'NetworkInterfaceIdensemble vers l'ENI principal de l'instance leader.
Désinstallation
Pour supprimer la passerelle Hybrid Nodes, exécutez :
helm uninstall eks-hybrid-nodes-gateway --namespace eks-hybrid-nodes-gateway
Note
La désinstallation du graphique Helm ne supprime pas automatiquement les entrées de la table de routage VPC créées par la passerelle. Après la désinstallation, supprimez manuellement les itinéraires des CIDR de votre pod hybride des tables de routage VPC afin d'éviter d'acheminer le trafic vers des instances qui n'exécutent plus la passerelle. Vous pouvez supprimer des itinéraires à l'aide de l' AWS interface de ligne de commande :
aws ec2 delete-route \ --route-table-idROUTE_TABLE_ID\ --destination-cidr-blockPOD_CIDR
Étapes suivantes
-
Référence de configuration de la passerelle Amazon EKS Hybrid Nodes— Personnalisez les valeurs Helm, les indicateurs CLI et les paramètres d'élection du leader.
-
Opérations de la passerelle Amazon EKS Hybrid Nodes— Surveillez la passerelle, comprenez le comportement en cas de basculement et planifiez la mise à l'échelle.
-
Résolution des problèmes de passerelle Amazon EKS Hybrid Nodes— Diagnostiquez et résolvez les problèmes courants.