Préparer le réseau pour les nœuds hybrides - Amazon EKS

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.

Préparer le réseau pour les nœuds hybrides

Cette rubrique fournit une vue d'ensemble de la configuration réseau que vous devez avoir configurée avant de créer votre cluster Amazon EKS et de connecter des nœuds hybrides. Ce guide part du principe que vous avez satisfait aux exigences requises pour la connectivité réseau hybride à l'aide d'AWS Site-to-Site un VPN, de AWS Direct Connect ou de votre propre solution VPN.

Connectivité réseau de nœuds hybrides.

Configuration réseau sur site

Configuration réseau minimale requise

Pour une expérience optimale, nous vous recommandons de disposer d'une connectivité réseau fiable d'au moins 100 Mbits/s et d'une latence aller-retour maximale de 200 ms pour la connexion des nœuds hybrides à la AWS région. Il s'agit d'une directive générale qui s'adapte à la plupart des cas d'utilisation, mais qui ne constitue pas une exigence stricte. Les exigences en matière de bande passante et de latence peuvent varier en fonction du nombre de nœuds hybrides et des caractéristiques de votre charge de travail, telles que la taille de l'image de l'application, l'élasticité de l'application, les configurations de surveillance et de journalisation, et les dépendances des applications en matière d'accès aux données stockées dans d'autres AWS services. Nous vous recommandons de tester avec vos propres applications et environnements avant le déploiement en production afin de vérifier que votre configuration réseau répond aux exigences de vos charges de travail.

Nœud et module sur site CIDRs

Identifiez le nœud et le pod CIDRs que vous utiliserez pour vos nœuds hybrides et les charges de travail qui y sont exécutées. Le nœud CIDR est alloué depuis votre réseau sur site et le nœud CIDR est alloué depuis votre interface réseau de conteneurs (CNI) si vous utilisez un réseau superposé pour votre CNI. Vous transmettez votre nœud CIDRs et votre pod locaux CIDRs en tant qu'entrées lorsque vous créez votre cluster EKS avec les RemotePodNetwork champs RemoteNodeNetwork et. Votre nœud local CIDRs doit être routable sur votre réseau local. Consultez la section suivante pour plus d'informations sur la routabilité du module CIDR sur site.

Les blocs CIDR du nœud et du pod locaux doivent répondre aux exigences suivantes :

  1. Se situer dans l'une des plages IPv4 RFC-1918 suivantes : 10.0.0.0/8172.16.0.0/12, ou. 192.168.0.0/16

  2. Le CIDR VPC de votre cluster EKS ou le CIDR de votre service Kubernetes ne se chevauchent pas. IPv4

Routage réseau du pod sur site

Lorsque vous utilisez des nœuds hybrides EKS, nous vous recommandons généralement de rendre votre module sur site CIDRs routable sur votre réseau local afin de permettre une communication et des fonctionnalités complètes entre les environnements cloud et sur site.

Réseaux de pods routables

Si vous parvenez à rendre votre réseau de modules routable sur votre réseau local, suivez les instructions ci-dessous.

  1. Configurez le RemotePodNetwork champ pour votre cluster EKS avec le CIDR de votre pod local, vos tables de routage VPC avec le CIDR de votre pod local et le groupe de sécurité de votre cluster EKS avec le CIDR de votre pod local.

  2. Vous pouvez utiliser plusieurs techniques pour rendre votre pod CIDR local routable sur votre réseau local, notamment le Border Gateway Protocol (BGP), les itinéraires statiques ou d'autres solutions de routage personnalisées. Le BGP est la solution recommandée car elle est plus évolutive et plus facile à gérer que les solutions alternatives qui nécessitent une configuration de routage personnalisée ou manuelle. AWS prend en charge les fonctionnalités BGP de Cilium et Calico pour les modules publicitaires CIDRs, voir Configuration d'un CNI pour les nœuds hybrides et Pod à distance routable CIDRs pour plus d'informations.

  3. Les webhooks peuvent s'exécuter sur des nœuds hybrides car le plan de contrôle EKS est capable de communiquer avec les adresses IP des pods attribuées aux webhooks.

  4. Les charges de travail exécutées sur des nœuds cloud peuvent communiquer directement avec les charges de travail exécutées sur des nœuds hybrides du même cluster EKS.

  5. D'autres AWS services, tels que les équilibreurs de charge des AWS applications et Amazon Managed Service for Prometheus, sont capables de communiquer avec les charges de travail exécutées sur des nœuds hybrides afin d'équilibrer le trafic réseau et de récupérer les métriques des pods.

Réseaux de pods non routables

Si vous ne parvenez pas à rendre vos réseaux de modules routables sur votre réseau local, suivez les instructions ci-dessous.

  1. Les webhooks ne peuvent pas s'exécuter sur des nœuds hybrides car ils nécessitent une connectivité entre le plan de contrôle EKS et les adresses IP des pods attribuées aux webhooks. Dans ce cas, nous vous recommandons d'exécuter des webhooks sur les nœuds cloud du même cluster EKS que vos nœuds hybrides, voir Configurer les webhooks pour les nœuds hybrides pour plus d'informations.

  2. Les charges de travail exécutées sur des nœuds cloud ne peuvent pas communiquer directement avec les charges de travail exécutées sur des nœuds hybrides lorsque vous utilisez le VPC CNI pour les nœuds cloud et Cilium ou Calico pour les nœuds hybrides.

  3. Utilisez la distribution du trafic de service pour maintenir le trafic local dans la zone d'où il provient. Pour plus d'informations sur la distribution du trafic de service, consultezConfiguration de la distribution du trafic de service.

  4. Configurez votre CNI pour utiliser une mascarade de sortie ou une traduction d'adresses réseau (NAT) pour le trafic des pods lorsqu'il quitte vos hôtes locaux. Ceci est activé par défaut dans Cilium. Calico doit natOutgoing être réglé sur. true

  5. D'autres AWS services, tels que les équilibreurs de charge d' AWS application et Amazon Managed Service for Prometheus, ne sont pas en mesure de communiquer avec les charges de travail exécutées sur des nœuds hybrides.

Accès requis lors de l'installation et de la mise à niveau du nœud hybride

Vous devez avoir accès aux domaines suivants pendant le processus d'installation au cours duquel vous installez les dépendances des nœuds hybrides sur vos hôtes. Ce processus peut être effectué une seule fois lorsque vous créez les images de votre système d'exploitation ou sur chaque hôte lors de l'exécution. Cela inclut l'installation initiale et la mise à niveau de la version Kubernetes de vos nœuds hybrides.

Composant URL Protocole Port

Artefacts du nœud EKS (S3)

https://hybrid-assets.eks.amazonaws.com

HTTPS

443

Points de terminaison du service EKS

https://eks. region.amazonaws.com

HTTPS

443

Points de terminaison du service ECR

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

HTTPS

443

Points de terminaison EKS ECR

Voir Afficher les registres d'images de conteneurs Amazon pour les modules complémentaires Amazon EKS pour les points de terminaison régionaux.

HTTPS

443

Point de terminaison binaire SSM 1

https://amazon-ssm - region .s3. region.amazonaws.com

HTTPS

443

Point de terminaison 1 du service SSM

https://ssm. region.amazonaws.com

HTTPS

443

Point de terminaison binaire IAM Anywhere 2

https://rolesanywhere.amazonaws.com

HTTPS

443

Point de terminaison 2 du service IAM Anywhere

https://rolesanywhere. region.amazonaws.com

HTTPS

443

Note

1 L'accès aux points de terminaison AWS SSM n'est requis que si vous utilisez des activations hybrides AWS SSM pour votre fournisseur d'informations d'identification IAM sur site.

2 L'accès aux points de terminaison AWS IAM n'est requis que si vous utilisez AWS IAM Roles Anywhere comme fournisseur d'informations d'identification IAM sur site.

Accès requis pour les opérations continues du cluster

L'accès réseau suivant pour votre pare-feu local est requis pour les opérations de cluster en cours.

Important

En fonction de votre choix de CNI, vous devez configurer des règles d'accès réseau supplémentaires pour les ports CNI. Consultez la documentation de Cilium et la documentation de Calico pour plus de détails.

Type Protocole Direction Port Source Destination Utilisation

HTTPS

TCP

Sortant

443

CIDR (s) du nœud distant

Cluster EKS IPs 1

kubelet vers le serveur d'API Kubernetes

HTTPS

TCP

Sortant

443

Remote Pod CIDR (s)

Cluster EKS IPs 1

Du pod au serveur d'API Kubernetes

HTTPS

TCP

Sortant

443

CIDR (s) du nœud distant

Point de terminaison du service SSM

Activations hybrides SSM, actualisation des informations d'identification et battements de cœur du SSM toutes les 5 minutes

HTTPS

TCP

Sortant

443

CIDR (s) du nœud distant

Point de terminaison du service IAM Anywhere

Actualisation des informations d'identification d'IAM Roles Anywhere

HTTPS

TCP

Sortant

443

Remote Pod CIDR (s)

Point de terminaison régional STS

Du pod au point de terminaison STS, uniquement requis pour IRSA

HTTPS

TCP

Sortant

443

CIDR (s) du nœud distant

Point de terminaison du service Amazon EKS Auth

Nœud vers le point de terminaison Amazon EKS Auth, uniquement requis pour Amazon EKS Pod Identity

HTTPS

TCP

Entrant

10250

Cluster EKS IPs 1

CIDR (s) du nœud distant

Serveur d'API Kubernetes vers Kubelet

HTTPS

TCP

Entrant

Ports Webhook

Cluster EKS IPs 1

Remote Pod CIDR (s)

Serveur d'API Kubernetes pour les webhooks

HTTPS

TCP, UDP

Entrant, sortant

53

Remote Pod CIDR (s)

Remote Pod CIDR (s)

Pod vers CoreDNS. Si vous exécutez au moins une réplique de CoreDNS dans le cloud, vous devez autoriser le trafic DNS vers le VPC sur lequel CoreDNS est exécuté.

Défini par l'utilisateur

Défini par l'utilisateur

Entrant, sortant

Ports d'applications

Remote Pod CIDR (s)

Remote Pod CIDR (s)

Pod à Pod

Note

1 Celui IPs du cluster EKS. Consultez la section suivante sur les interfaces réseau élastiques Amazon EKS.

Interfaces réseau Amazon EKS

Amazon EKS attache des interfaces réseau aux sous-réseaux du VPC que vous transmettez lors de la création du cluster afin de permettre la communication entre le plan de contrôle EKS et votre VPC. Les interfaces réseau créées par Amazon EKS se trouvent après la création du cluster dans la EC2 console Amazon ou à l'aide de la AWS CLI. Les interfaces réseau d'origine sont supprimées et de nouvelles interfaces réseau sont créées lorsque des modifications sont appliquées à votre cluster EKS, telles que les mises à niveau de version de Kubernetes. Vous pouvez restreindre la plage d'adresses IP des interfaces réseau Amazon EKS en utilisant des tailles de sous-réseaux limitées pour les sous-réseaux que vous transmettez lors de la création du cluster, ce qui facilite la configuration de votre pare-feu sur site afin de permettre la inbound/outbound connectivité à cet ensemble connu et restreint de. IPs Pour contrôler les sous-réseaux dans lesquels les interfaces réseau sont créées, vous pouvez limiter le nombre de sous-réseaux que vous spécifiez lorsque vous créez un cluster ou vous pouvez mettre à jour les sous-réseaux après avoir créé le cluster.

Les interfaces réseau mises en service par Amazon EKS contiennent une description du formatAmazon EKS your-cluster-name . Consultez l'exemple ci-dessous pour une commande AWS CLI que vous pouvez utiliser pour trouver les adresses IP des interfaces réseau approvisionnées par Amazon EKS. VPC_IDRemplacez-le par l'ID du VPC que vous transmettez lors de la création du cluster.

aws ec2 describe-network-interfaces \ --query 'NetworkInterfaces[?(VpcId == VPC_ID && contains(Description,Amazon EKS))].PrivateIpAddress'

AWS Configuration du VPC et du sous-réseau

Les exigences existantes en matière de VPC et de sous-réseau pour Amazon EKS s'appliquent aux clusters dotés de nœuds hybrides. En outre, votre VPC CIDR ne peut pas chevaucher votre nœud et votre pod locaux. CIDRs Vous devez configurer les itinéraires dans votre table de routage VPC pour votre nœud local et éventuellement pour votre pod. CIDRs Ces itinéraires doivent être configurés pour acheminer le trafic vers la passerelle que vous utilisez pour votre connectivité réseau hybride, qui est généralement une passerelle privée virtuelle (VGW) ou une passerelle de transit (TGW). Si vous utilisez TGW ou VGW pour connecter votre VPC à votre environnement sur site, vous devez créer une pièce jointe TGW ou VGW pour votre VPC. Votre VPC doit prend en charge le nom d'hôte DNS et la résolution DNS.

Les étapes suivantes utilisent la AWS CLI. Vous pouvez également créer ces ressources dans AWS Management Console ou avec d'autres interfaces telles que AWS CloudFormation AWS CDK ou Terraform.

Étape 1 : créer un VPC

  1. Exécutez la commande suivante pour créer un VPC. VPC_CIDRRemplacez-le par une IPv4 plage CIDR RFC-1918 (privée) ou non RFC-1918 (publique) (par exemple). 10.0.0.0/16 Remarque : La résolution DNS, qui est une exigence d'EKS, est activée par défaut pour le VPC.

    aws ec2 create-vpc --cidr-block VPC_CIDR
  2. Activez les noms d'hôte DNS pour votre VPC. Remarque : la résolution DNS est activée par défaut pour le VPC. VPC_IDRemplacez-le par l'ID du VPC que vous avez créé à l'étape précédente.

    aws ec2 modify-vpc-attribute --vpc-id VPC_ID --enable-dns-hostnames

Étape 2 : Création de sous-réseaux

Créez au moins 2 sous-réseaux. Amazon EKS utilise ces sous-réseaux pour les interfaces réseau du cluster. Pour plus d'informations, consultez les exigences et considérations relatives aux sous-réseaux.

  1. Vous pouvez trouver les zones de disponibilité d'une AWS région à l'aide de la commande suivante. Remplacez us-west-2 par votre région.

    aws ec2 describe-availability-zones \ --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
  2. Créez un sous-réseau. Remplacez VPC_ID par l'ID du VPC. SUBNET_CIDRRemplacez-le par le bloc CIDR de votre sous-réseau (par exemple 10.0.1.0/24). Remplacez AZ par la zone de disponibilité dans laquelle le sous-réseau sera créé (par exemple us-west-2a). Les sous-réseaux que vous créez doivent se trouver dans au moins 2 zones de disponibilité différentes.

    aws ec2 create-subnet \ --vpc-id VPC_ID \ --cidr-block SUBNET_CIDR \ --availability-zone AZ

(Facultatif) Étape 3 : associer un VPC à la passerelle privée virtuelle Amazon VPC Transit Gateway (TGW) ou AWS Direct Connect (VGW)

Si vous utilisez un TGW ou un VGW, attachez votre VPC au TGW ou au VGW. Pour plus d'informations, consultez les pièces jointes Amazon VPC dans Amazon VPC Transit Gateways ou les associations de passerelles privées AWS virtuelles Direct Connect.

Passerelle de transit

Exécutez la commande suivante pour connecter un Transit Gateway. Remplacez VPC_ID par l'ID du VPC. Remplacez SUBNET_ID1 et SUBNET_ID2 par IDs les sous-réseaux que vous avez créés à l'étape précédente. TGW_IDRemplacez-le par l'identifiant de votre TGW.

aws ec2 create-transit-gateway-vpc-attachment \ --vpc-id VPC_ID \ --subnet-ids SUBNET_ID1 SUBNET_ID2 \ --transit-gateway-id TGW_ID

Passerelle privée virtuelle

Exécutez la commande suivante pour connecter un Transit Gateway. VPN_IDRemplacez-le par l'ID de votre VGW. Remplacez VPC_ID par l'ID du VPC.

aws ec2 attach-vpn-gateway \ --vpn-gateway-id VPN_ID \ --vpc-id VPC_ID

(Facultatif) Étape 4 : Création d'une table de routage

Vous pouvez modifier la table de routage principale du VPC ou créer une table de routage personnalisée. Les étapes suivantes créent une table de routage personnalisée avec les itinéraires vers le nœud et le pod CIDRs locaux. Pour plus d'informations, consultez la section Tables de routage de sous-réseaux. Remplacez VPC_ID par l'ID du VPC.

aws ec2 create-route-table --vpc-id VPC_ID

Étape 5 : créer des itinéraires pour les nœuds et les pods locaux

Créez des itinéraires dans la table de routage pour chacun de vos nœuds distants locaux. Vous pouvez modifier la table de routage principale du VPC ou utiliser la table de routage personnalisée que vous avez créée à l'étape précédente.

Les exemples ci-dessous montrent comment créer des itinéraires pour votre nœud et votre pod CIDRs locaux. Dans les exemples, une passerelle de transit (TGW) est utilisée pour connecter le VPC à l'environnement sur site. Si vous disposez de plusieurs nœuds et pods sur site CIDRs, répétez les étapes pour chaque CIDR.

  • Si vous utilisez une passerelle Internet ou une passerelle privée virtuelle (VGW), remplacez par--transit-gateway-id. --gateway-id

  • RT_IDRemplacez-le par l'ID de la table de routage que vous avez créée à l'étape précédente.

  • REMOTE_NODE_CIDRRemplacez-le par la plage CIDR que vous utiliserez pour vos nœuds hybrides.

  • REMOTE_POD_CIDRRemplacez-le par la plage CIDR que vous utiliserez pour les pods exécutés sur des nœuds hybrides. La plage CIDR du pod correspond à la configuration CNI (Container Networking Interface), qui utilise le plus souvent un réseau superposé sur site. Pour de plus amples informations, veuillez consulter Configuration d'un CNI pour les nœuds hybrides.

  • TGW_IDRemplacez-le par l'identifiant de votre TGW.

Réseau de nœuds distants

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

Réseau Remote Pod

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

(Facultatif) Étape 6 : associer des sous-réseaux à la table de routage

Si vous avez créé une table de routage personnalisée à l'étape précédente, associez chacun des sous-réseaux que vous avez créés à l'étape précédente à votre table de routage personnalisée. Si vous modifiez la table de routage principale du VPC, les sous-réseaux sont automatiquement associés à la table de routage principale du VPC et vous pouvez ignorer cette étape.

Exécutez la commande suivante pour chacun des sous-réseaux que vous avez créés au cours des étapes précédentes. RT_IDRemplacez-le par la table de routage que vous avez créée à l'étape précédente. Remplacez SUBNET_ID par l'ID d'un sous-réseau.

aws ec2 associate-route-table --route-table-id RT_ID --subnet-id SUBNET_ID

Configuration du groupe de sécurité du cluster

L'accès suivant pour votre groupe de sécurité de cluster EKS est requis pour les opérations de cluster en cours.

Type Protocole Direction Port Source Destination Utilisation

HTTPS

TCP

Entrant

443

CIDR (s) du nœud distant

N/A

Serveur d'API Kubelet vers Kubernetes

HTTPS

TCP

Entrant

443

Remote Pod CIDR (s)

N/A

Pods nécessitant un accès au serveur API K8s lorsque le CNI n'utilise pas le NAT pour le trafic des pods.

HTTPS

TCP

Sortant

10250

N/A

CIDR (s) du nœud distant

Serveur d'API Kubernetes pour Kubelet

HTTPS

TCP

Sortant

Ports Webhook

N/A

Remote Pod CIDR (s)

Serveur d'API Kubernetes vers webhook (si vous exécutez des webhooks sur des nœuds hybrides)

Pour créer un groupe de sécurité avec les règles d'accès entrant, exécutez les commandes suivantes. Ce groupe de sécurité doit être transmis lorsque vous créez votre cluster Amazon EKS. Par défaut, la commande ci-dessous crée un groupe de sécurité qui autorise tous les accès sortants. Vous pouvez restreindre l'accès sortant pour inclure uniquement les règles ci-dessus. Si vous envisagez de limiter les règles de sortie, nous vous recommandons de tester minutieusement toutes vos applications et la connectivité des pods avant d'appliquer les règles modifiées à un cluster de production.

  • Dans la première commande, remplacez SG_NAME par le nom de votre groupe de sécurité

  • Dans la première commande, remplacez VPC_ID par l'ID du VPC que vous avez créé à l'étape précédente

  • Dans la deuxième commande, remplacez SG_ID par l'ID du groupe de sécurité que vous avez créé dans la première commande

  • Dans la deuxième commande, remplacez REMOTE_NODE_CIDR et par REMOTE_POD_CIDR les valeurs de vos nœuds hybrides et de votre réseau sur site.

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"}]}]'