Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Configurer les modules complémentaires pour les nœuds hybrides
Cette page décrit les considérations relatives à l’exécution de module complémentaire AWS et de modules complémentaire communautaires sur les nœuds hybrides Amazon EKS. Pour en savoir plus sur les modules complémentaires Amazon EKS et les processus de création, de mise à niveau et de suppression de modules complémentaires de votre cluster, consultez Modules complémentaires Amazon EKS. Sauf indication contraire sur cette page, les processus de création, de mise à niveau et de suppression des modules complémentaires Amazon EKS sont les mêmes pour les clusters Amazon EKS avec des nœuds hybrides que pour les clusters Amazon EKS avec des nœuds exécutés dans le cloud AWS. Seuls les modules complémentaires inclus dans cette page ont été validés pour leur compatibilité avec les nœuds hybrides Amazon EKS.
Les modules complémentaires AWS suivants sont compatibles avec les nœuds hybrides Amazon EKS.
| module complémentaire AWS | Versions complémentaires compatibles |
|---|---|
|
kube-proxy |
v1.25.14-eksbuild.2 et versions ultérieures |
|
CoreDNS |
v1.9.3-eksbuild.7 et versions ultérieures |
|
AWS Distro for OpenTelemetry (ADOT) |
v0.102.1-eksbuild.2 et versions ultérieures |
|
Agent d’observabilité CloudWatch |
v2.2.1-eksbuild.1 et versions ultérieures |
|
Agent EKS Pod Identity |
|
|
Agent de surveillance de nœuds |
v1.2.0-eksbuild.1 et versions ultérieures |
|
Contrôleur d’instantané CSI |
v8.1.0-eksbuild.1 et ultérieures |
|
Connecteur d’autorité de certification privée AWS pour Kubernetes |
v1.6.0-eksbuild.1 et ultérieures |
Les modules complémentaires communautaires suivants sont compatibles avec les nœuds hybrides Amazon EKS. Pour en savoir plus sur les modules complémentaires communautaires, consultez Community add-ons.
| Module complémentaire communautaire | Versions complémentaires compatibles |
|---|---|
|
Serveur de métriques Kubernetes |
v0.7.2-eksbuild.1 et versions ultérieures |
|
cert-manager |
v1.17.2-eksbuild.1 et versions ultérieures |
|
Exportateur de nœuds Prometheus |
v1.9.1-eksbuild.2 et versions ultérieures |
|
kube-state-metrics |
v2.15.0-eksbuild.4 et versions ultérieures |
|
DNS externe |
v0.19.0-eksbuild.1 et versions ultérieures |
Outre les modules complémentaires Amazon EKS présentés dans les tableaux ci-dessus, le collecteur du service géré Amazon pour Prometheus et l’AWS Load Balancer Controller pour l’entrée d’applications (HTTP) et l’équilibrage de charge (TCP/UDP) sont compatibles avec les nœuds hybrides.
Il existe des modules complémentaires AWS et des modules complémentaires communautaires qui ne sont pas compatibles avec les nœuds hybrides Amazon EKS. Les dernières versions de ces modules complémentaires disposent d’une règle anti-affinité pour l’étiquette eks.amazonaws.com/compute-type: hybrid par défaut appliquée aux nœuds hybrides. Cela les empêche de s’exécuter sur des nœuds hybrides lorsqu’ils sont déployés dans vos clusters. Si vous disposez de clusters comprenant à la fois des nœuds hybrides et des nœuds fonctionnant dans le cloud AWS, vous pouvez déployer ces modules complémentaires dans votre cluster sur les nœuds fonctionnant dans le cloud AWS. Amazon VPC CNI n’est pas compatible avec les nœuds hybrides, et Cilium et Calico sont pris en charge en tant qu’interfaces réseau de conteneurs (CNI) pour les nœuds hybrides Amazon EKS. Pour plus d’informations, consultez Configurer CNI pour les nœuds hybrides.
Modules complémentaires AWS
Les sections suivantes décrivent les différences entre l’exécution de modules complémentaires AWS compatibles sur des nœuds hybrides et d’autres types de calcul Amazon EKS.
kube-proxy et CoreDNS
EKS installe kube-proxy et CoreDNS en tant que modules complémentaires autogérés par défaut lorsque vous créez un cluster EKS à l’aide de l’API AWS et des SDK AWS, y compris à partir de l’interface CLI AWS. Vous pouvez remplacer ces modules complémentaires par les modules complémentaires Amazon EKS après la création du cluster. Consultez la documentation EKS pour plus de détails sur Gérer kube-proxy dans les Clusters Amazon EKS et Gérer CoreDNS pour DNS dans les clusters Amazon EKS. Si vous utilisez un cluster en mode mixte avec à la fois des nœuds hybrides et des nœuds dans le cloud AWS, AWS recommande d’avoir au moins un réplica CoreDNS sur les nœuds hybrides et au moins un réplica CoreDNS sur vos nœuds dans le cloud AWS. Consultez Configuration des réplicas de CoreDNS pour les étapes de configuration.
Agent d’observabilité CloudWatch
L’opérateur CloudWatch Observability Agent utilise des webhooks
Les métriques au niveau des nœuds ne sont pas disponibles pour les nœuds hybrides, car CloudWatch Container Insights dépend de la disponibilité du service IMDS (Instance Metadata Service) pour les métriques au niveau des nœuds. Les métriques au niveau des clusters, des charges de travail, des pods et des conteneurs sont disponibles pour les nœuds hybrides.
Après avoir installé le module complémentaire en suivant les étapes décrites dans Installer l’agent CloudWatch avec l’observabilité Amazon CloudWatch, le manifeste du module complémentaire doit être mis à jour avant que l’agent puisse s’exécuter correctement sur les nœuds hybrides. Modifiez la ressource amazoncloudwatchagents sur le cluster pour ajouter la variable d’environnement RUN_WITH_IRSA comme indiqué ci-dessous.
kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
apiVersion: v1 items: - apiVersion: cloudwatch.aws.amazon.com/v1alpha1 kind: AmazonCloudWatchAgent metadata: ... name: cloudwatch-agent namespace: amazon-cloudwatch ... spec: ... env: - name: RUN_WITH_IRSA # <-- Add this value: "True" # <-- Add this - name: K8S_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName ...
Collecteur géré Amazon Managed Prometheus pour nœuds hybrides
Un collecteur géré par le service géré Amazon pour Prometheus (AMP) consiste en un scraper qui détecte et collecte des métriques à partir des ressources d’un cluster Amazon EKS. AMP gère le scraper pour vous, vous évitant ainsi d’avoir à gérer vous-même les instances, les agents ou les scrapers.
Vous pouvez utiliser les collecteurs gérés AMP sans aucune configuration supplémentaire spécifique aux nœuds hybrides. Cependant, les points de terminaison métriques de vos applications sur les nœuds hybrides doivent être accessibles depuis le VPC, y compris les routes entre le VPC et les CIDR du réseau de pods distant, ainsi que les ports ouverts dans votre pare-feu sur site. De plus, votre cluster doit disposer d’un accès privé au point de terminaison du cluster.
Suivez les étapes décrites dans la section Utilisation d’un collecteur géré par AWS dans le Guide de l’utilisateur du Service géré Amazon pour Prometheus.
AWS Distro for OpenTelemetry (ADOT)
Vous pouvez utiliser le module complémentaire AWS Distro for OpenTelemetry (ADOT) pour collecter des métriques, des journaux et des données de traçage à partir de vos applications s’exécutant sur des nœuds hybrides. ADOT utilise des webhooks
Suivez les étapes décrites dans la section « Démarrer avec Distro AWS for OpenTelemetry à l’aide des modules complémentaires EKS »
Contrôleur de l'équilibreur de charge AWS
Vous pouvez utiliser l’AWS Load Balancer Controller et Application Load Balancer (ALB) ou Network Load Balancer (NLB) avec le type de cible ip pour les charges de travail sur les nœuds hybrides. Les cibles IP utilisées avec l’ALB ou le NLB doivent être routables à partir d’AWS. L’AWS Load Balancer Controller utilise également des webhooks
Pour installer l’AWS Load Balancer Controller, suivez les étapes décrites à AWS Application Load Balancer ou AWS Network Load Balancer.
Pour l’entrée avec ALB, vous devez spécifier les annotations ci-dessous. Pour plus d’informations, consultez Routage du trafic des applications et du trafic HTTP avec des équilibreurs de charge Application Load Balancer.
alb.ingress.kubernetes.io/target-type: ip
Pour l’équilibrage de charge avec NLB, vous devez spécifier les annotations ci-dessous. Pour plus d’informations, consultez Acheminer le trafic TCP et UDP avec des Network Load Balancers.
service.beta.kubernetes.io/aws-load-balancer-type: "external" service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
Agent EKS Pod Identity
Note
Pour déployer correctement le module complémentaire EKS Pod Identity Agent sur des nœuds hybrides exécutant Bottlerocket, assurez-vous que votre version de Bottlerocket est au moins v1.39.0. Pod Identity Agent n’est pas pris en charge sur les versions antérieures de Bottlerocket dans les environnements à nœuds hybrides.
Le DaemonSet Amazon EKS Pod Identity Agent d’origine dépend de la disponibilité d’EC2 IMDS sur le nœud pour obtenir les informations d’identification AWS requises. Comme IMDS n’est pas disponible sur les nœuds hybrides, à partir de la version 1.3.3-eksbuild.1, le module complémentaire Pod Identity Agent déploie en option un DaemonSet qui monte les informations d’identification requises. Les nœuds hybrides exécutant Bottlerocket nécessitent une méthode différente pour monter les informations d’identification. À partir de la version 1.3.7-eksbuild.2, le module complémentaire Pod Identity Agent déploie en option un DaemonSet qui cible spécifiquement les nœuds hybrides Bottlerocket. Les sections suivantes décrivent le processus permettant d’activer les DaemonSets optionnels.
Ubuntu/RHEL/AL2023
-
Pour utiliser l’agent Pod Identity sur les nœuds hybrides Ubuntu/RHEL/Al2023, définissez
enableCredentialsFile: truedans la section hybridenodeadmde la configuration comme indiqué ci-dessous :apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: hybrid: enableCredentialsFile: true # <-- Add thisCela permettra à
nodeadmde créer un fichier d’informations d’identification à configurer sur le nœud sous/eks-hybrid/.aws/credentials, qui sera utilisé par les podseks-pod-identity-agent. Ce fichier d’informations d’identification contiendra des informations d’identification AWS temporaires qui seront actualisées périodiquement. -
Après avoir mis à jour la configuration
nodeadmsur chaque nœud, exécutez la commandenodeadm initsuivante avec votrenodeConfig.yamlpour joindre vos nœuds hybrides à votre cluster Amazon EKS. Si vos nœuds ont déjà rejoint le cluster, exécutez à nouveau la commandeinit.nodeadm init -c file://nodeConfig.yaml -
Installez
eks-pod-identity-agentavec la prise en charge des nœuds hybrides activée, à l’aide de l’interface CLI AWS ou AWS Management Console.-
AWS CLI : À partir de la machine que vous utilisez pour administrer le cluster, exécutez la commande suivante pour effectuer l’installation
eks-pod-identity-agentavec la prise en charge des nœuds hybrides activée. Remplacezmy-clusterpar le nom de votre cluster.aws eks create-addon \ --cluster-name my-cluster \ --addon-name eks-pod-identity-agent \ --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}' -
AWS Management Console : Si vous installez le module complémentaire Pod Identity Agent via la console AWS, ajoutez les éléments suivants à la configuration facultative pour déployer le DaemonSet qui cible les nœuds hybrides.
{"daemonsets":{"hybrid":{"create": true}}}
-
Bottlerocket
-
Pour utiliser l’agent Pod Identity sur les nœuds hybrides Bottlerocket, ajoutez l’indicateur
--enable-credentials-file=trueà la commande utilisée pour les données utilisateur du conteneur de démarrage Bottlerocket, comme décrit dans Connectez des nœuds hybrides avec Bottlerocket.-
Si vous utilisez le fournisseur d’informations d’identification SSM, votre commande devrait ressembler à ceci :
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region> --enable-credentials-file=true -
Si vous utilisez le fournisseur d’informations d’identification Rôles Anywhere IAM, votre commande devrait ressembler à ceci :
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key> --enable-credentials-file=trueCela configurera le script bootstrap pour créer un fichier d’informations d’identification sur le nœud sous
/var/eks-hybrid/.aws/credentials, qui sera utilisé par les podseks-pod-identity-agent. Ce fichier d’informations d’identification contiendra des informations d’identification AWS temporaires qui seront actualisées périodiquement.
-
-
Installez
eks-pod-identity-agentavec la prise en charge des nœuds hybrides Bottlerocket activée, à l’aide de l’interface CLI AWS ou AWS Management Console.-
CLI AWS : À partir de la machine que vous utilisez pour administrer le cluster, exécutez la commande suivante pour effectuer l’installation de
eks-pod-identity-agentavec la prise en charge des nœuds hybrides Bottlerocket activée. Remplacezmy-clusterpar le nom de votre cluster.aws eks create-addon \ --cluster-name my-cluster \ --addon-name eks-pod-identity-agent \ --configuration-values '{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}' -
AWS Management Console : Si vous installez le module complémentaire Pod Identity Agent via la console AWS, ajoutez les éléments suivants à la configuration facultative pour déployer le DaemonSet qui cible les nœuds hybrides Bottlerocket.
{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}
-
Contrôleur d’instantané CSI
À partir de la version v8.1.0-eksbuild.2, le module complémentaire CSI Snapshot Controller applique une règle d’anti-affinité souple pour les nœuds hybrides, en privilégiant l’exécution du contrôleur deployment sur EC2 dans la même région AWS que le plan de contrôle Amazon EKS. Le fait de co-localiser le deployment dans la même région AWS que le plan de contrôle Amazon EKS améliore la latence.
Community add-ons
Les sections suivantes décrivent les différences entre l’exécution d’extensions communautaires compatibles sur des nœuds hybrides et d’autres types de calcul Amazon EKS.
Serveur de métriques Kubernetes
Le plan de contrôle doit atteindre l’adresse IP du pod du serveur de métriques (ou l’adresse IP du nœud si hostNetwork est activé). Par conséquent, à moins que vous n’exécutiez Metrics Server en mode hostNetwork, vous devez configurer un réseau de pods distant lors de la création de votre cluster Amazon EKS, et vous devez rendre vos adresses IP de pods routables. La mise en œuvre du protocole de passerelle frontière (BGP) avec le CNI est une méthode courante pour rendre les adresses IP de vos pods routables.
cert-manager
cert-manager utilise des webhooks.cert-manager sur des nœuds hybrides, votre CIDR de pod sur site doit être routable sur votre réseau sur site et vous devez configurer votre cluster EKS avec votre réseau de pods distant. Pour plus d’informations, consultez Configurer les webhooks pour les nœuds hybrides.