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 sur 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.
Commencez 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, voirPasserelle 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 CNI VPC sur les nœuds de cloud : les nœuds de passerelle et les autres nœuds de cloud du cluster doivent utiliser le CNI AWS VPC. La passerelle s'appuie 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 l'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 passerelle doivent autoriser le trafic UDP entrant et sortant sur le port 8472. Du côté du nœud hybride, les règles de pare-feu sur site doivent également autoriser le trafic du port UDP 8472 à destination et en provenance des adresses IP du nœud 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 en utilisant l'une des approches 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 approvisionner des 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 garantir une haute disponibilité. Deux options de configuration de nœuds sont prises en charge pour la passerelle :
-
Mode automatique EKS (recommandé)— Les nœuds sont approvisionné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é avec 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 le graphique Helm. Ils NodePool approvisionnent les instances EC2 avec les étiquettes, les taches et source/destination vérifient la configuration appropriées. Il n'est pas nécessaire de provisionner ou de configurer manuellement les nœuds.
Appliquez les ressources suivantes à votre cluster, en remplaçant les valeurs d'espace réservé :
-
YOUR_NODE_ROLE— Le nom du rôle Node IAM utilisé par EKS Auto Mode pour approvisionner 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éer un rôle IAM de nœud pour le mode automatique d'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 approvisionné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
Les principaux champs de cette configuration sont les suivants :
-
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— L'altération garantithybrid-gateway-node: NoScheduleuniquement les pods de passerelle dotés d'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 du graphique Helm pour cibler les pods de passerelle vers ces nœuds. -
nodeClassRef— Associe le NodePool NodeClass à la configuration de source/destination vérification.
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, les marques requises et un modèle de lancement personnalisé qui désactive le source/destination contrôle au lancement.
Étape 1 : créer un modèle de lancement
Créez un modèle de lancement avec des données utilisateur qui désactive le source/destination contrôle de l'ENI principal lorsque l'instance démarre :
# 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 de démarrage EKS.
Étape 2 : créer le groupe de nœuds gérés
Créez un groupe de nœuds gérés dédiés avec le libellé de la passerelle, la tache 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 :
-
--labelsest défini dehybrid-gateway-node=truetelle sorte que le sélecteur de nœuds du graphique Helm cible ces nœuds. -
--taintsajoute uneNoScheduletouche afin que seuls les modules de passerelle ayant un calendrier de tolérance correspondant sur ces nœuds soient limités. -
--launch-templateattache le modèle de lancement qui désactive source/destination la 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 pods utilisés par Cilium sur les nœuds hybrides (par exemple,). |
|
|
Comma-separated liste des identifiants de table de routage VPC à programmer (par exemple, |
Pour obtenir la liste complète des valeurs configurables, voirRé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 fonctionne correctement.
Vérifier l'état du pod
Vérifiez que deux pods 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érifier l'élection du leader
Vérifiez qu'un pod a obtenu le bail électoral du chef :
kubectl get lease -n eks-hybrid-nodes-gateway
La sortie indique le leader actuel dans la HOLDER colonne :
NAME HOLDER AGE hybrid-gateway-leader eks-hybrid-nodes-gateway-5d4f6a7b8c-abc12 2m
Vérifier le terminal de santé
Vérifiez que le terminal de santé répond sur le module 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 la AWS CLI, 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=='[.replaceable]`POD_CIDR`']"
Chaque CIDR du pod hybride doit avoir un itinéraire NetworkInterfaceId défini vers l'ENI principal de l'instance principale.
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 diagramme de 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 routes des CIDR de votre pod hybride dans les tables de routage VPC afin d'éviter de router le trafic vers des instances qui n'exécutent plus la passerelle. Vous pouvez supprimer des routes à l'aide de la AWS CLI :
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 drapeaux de la 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 le dimensionnement.
-
Résolution des problèmes liés à la passerelle Amazon EKS Hybrid Nodes— Diagnostiquez et résolvez les problèmes courants.