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.
Exécution d'EMR sur EKS sur des clusters IPv6
Vous pouvez exécuter Amazon EMR sur des charges de travail EKS sur des clusters Amazon EKS IPv6 afin de tirer parti d'un espace d'adressage nettement plus important et d'éviter l'épuisement des adresses IPv4 à mesure que vos environnements évoluent. Kubernetes
Pour plus d'informations sur la création d'un cluster Amazon EKS IPv6, consultez la section Adresses IPv6 pour les clusters, les pods et les services dans le guide de l'utilisateur Amazon EKS.
Modèles de soumission pris en charge
Les modèles de soumission suivants sont pris en charge sur les clusters Amazon EKS IPv6 :
-
StartJobRun -
Points de terminaison interactifs Spark Connect
-
Amazon SageMaker Unified Studio
-
Opérateur Spark
-
Opérateur Flink
-
Opérateur Livy
Modèles de soumission non pris en charge
Les points de terminaison Jupyter Enterprise Gateway (JEG) ne sont pas pris en charge sur les clusters IPv6.
Modèles de soumission ne nécessitant aucune configuration supplémentaire
Pour les modèles de soumission suivants, vous pouvez configurer et soumettre des charges de travail Amazon EMR sur un cluster IPv6 de la même manière que vous le faites pour IPv4. Aucune configuration supplémentaire n'est requise :
-
StartJobRun -
Points de terminaison interactifs Spark Connect
-
Amazon SageMaker Unified Studio
Operator-based modèles de soumission
Operator-based les modèles de soumission nécessitent une configuration supplémentaire pour assurer la compatibilité IPv6. Les sections suivantes décrivent la configuration requise pour chaque opérateur.
Opérateur Spark
Pour exécuter des charges de travail Spark Operator sur un cluster IPv6, ajoutez la configuration Spark suivante à vos SparkApplication spécifications. Cette configuration est requise pour toutes les versions prises en charge.
spec: sparkConf: "spark.kubernetes.driver.service.ipFamilies": "IPv6"
Cette configuration indique au Kubernetes client de créer le service de pilotes Spark avec la famille IP IPv6. Sans cela, le service de pilote utilise par défaut le protocole IPv4, qui n'est pas pris en charge sur un IPv6-only cluster.
En outre, pour les emr-7.x versions, vous devez appliquer la solution de contournement suivante en définissant cette variable d'environnement lors du déploiement de Spark Operator :
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
Après avoir installé l'opérateur Spark, exécutez la commande suivante pour définir la variable d'environnement :
kubectl set env deployment/spark-operator-deployment-name\ KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true \ -nspark-operator-namespace
Cette solution résout un problème connu lié à l'activation de la vérification emr-7.x versions utilisent une version du Kubernetes client fabric8 qui dépend de OkHttp 3.x, qui échoue à la vérification du nom d'hôte TLS lors de la connexion au serveur Kubernetes API via IPv6.
Opérateur Flink
Pour exécuter des charges de travail Flink Operator sur un cluster IPv6, vous devez définir la variable d'environnement suivante à la fois sur le module Flink Operator et sur vos FlinkDeployment modules de travail :
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
Cette solution résout le même problème de vérification du nom d'hôte IPv6 OkHttp 3.x décrit dans la section Spark Operator. Pour plus d'informations, consultez la section Configuration IPv6
Définissez la variable d'environnement sur le module Flink Operator
Définissez la variable d'environnement pendant helm install :
helm installmy-flink-operatorchart\ --set operatorPod.env[0].name=KUBERNETES_DISABLE_HOSTNAME_VERIFICATION \ --set-string operatorPod.env[0].value=true
Définissez la variable d'environnement sur vos modules de FlinkDeployment tâches
Injectez la variable d'environnement via un modèle de pod dans votre FlinkDeployment YAML :
spec: podTemplate: spec: containers: - name: flink-main-container env: - name: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION value: "true"
Opérateur Livy
Pour exécuter les charges de travail Livy Operator sur un cluster IPv6, vous devez configurer deux choses :
-
Annotation de l'équilibreur de charge Dualstack — Ajoutez l'annotation suivante lors de l'installation de l'organigramme Livy afin que le AWS Load Balancer Controller fournisse un équilibreur de charge réseau à double pile :
helm installmy-livychart\ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack" -
Configuration IPv6 du service de pilotes Spark : incluez la
spark.kubernetes.driver.service.ipFamiliesconfiguration lorsque vous soumettez des tâches Spark via Livy :{ "conf": { "spark.kubernetes.driver.service.ipFamilies": "IPv6" } }
Versions prises en charge
Le tableau suivant présente la prise en charge d'IPv6 par modèle de soumission et par version d'Amazon EMR. Les emr-spark-8.x versions sont des Spark-only versions et n'incluent pas Flink.
| Modèle de soumission | emr-7.14.0et versions 7.x ultérieures |
emr-spark-8.0.0 |
emr-spark-8.1.0+ |
|---|---|---|---|
StartJobRun |
✅ Pris en charge |
✅ Pris en charge |
✅ Pris en charge |
Points de terminaison interactifs Spark Connect |
✅ Pris en charge |
✅ Pris en charge |
✅ Pris en charge |
Amazon SageMaker Unified Studio |
✅ Pris en charge |
✅ Pris en charge |
✅ Pris en charge |
Opérateur Spark |
✅ Supporté 1,2 |
❌ Non pris en charge |
✅ Supporté 2 |
Opérateur Flink |
✅ Supporté 1 |
N/A |
N/A |
Opérateur Livy |
✅ Supporté 2 |
✅ Supporté 2 |
✅ Supporté 2 |
1 Nécessite la KUBERNETES_DISABLE_HOSTNAME_VERIFICATION solution de contournement décrite dans la section précédente pour ce modèle de soumission.
2 Nécessite une configuration supplémentaire décrite dans la section précédente pour ce modèle de soumission.
Résolution des problèmes
Les erreurs courantes que vous pouvez rencontrer lors de l'exécution d'Amazon EMR sur des charges de travail EKS sur des clusters IPv6 sont les suivantes.
Erreur : nom d'hôte ou adresse IP IPv6 attendu entre []
java.lang.AssertionError: assertion failed: Expected hostname or IPv6 IP enclosed in [] but got 2600:1f14:31b1:d102:d812::2
Cause : Vous utilisez une version d'Amazon EMR qui ne prend pas en charge IPv6. Les versions antérieures emr-7.14.0 n'incluent pas les correctifs IPv6 nécessaires.
Solution : effectuer une mise à niveau vers emr-7.14.0 une version ultérieure. Consultez Versions prises en charge la liste complète des versions prises en charge.
Erreur : SSLPeerUnverifiedException nom d'hôte non vérifié
javax.net.ssl.SSLPeerUnverifiedException: Hostname fd0f:f96c:1438::1 not verified
Cause : La variable d'KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=trueenvironnement n'est pas définie dans le pod Spark ou Flink Operator. OkHttp 3.x échoue à la vérification du nom d'hôte TLS lorsque le serveur Kubernetes API utilise une adresse IPv6.
Solution : KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true Réglez-le sur le module opérateur. Voir Opérateur Spark ou Opérateur Flink.
Erreur : la valeur « IPv4 » non valide n'est pas configurée sur ce cluster
Service "...-driver-svc" is invalid: spec.ipFamilies[0]: Invalid value: "IPv4": not configured on this cluster
Cause : L'application Spark n'inclut pas la spark.kubernetes.driver.service.ipFamilies=IPv6 configuration. Sans ce paramètre, Spark tente de créer le service de pilotes avec IPv4, ce qu'un IPv6-only cluster rejette.
Solution : ajoutez-le "spark.kubernetes.driver.service.ipFamilies": "IPv6" à votre sparkConf (pour Spark Operator) ou à l'confobjet de votre envoi par lots Livy. Voir Opérateur Spark ou Opérateur Livy.