View a markdown version of this page

Ejecución de EMR en EKS en clústeres IPv6 - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecución de EMR en EKS en clústeres IPv6

Puede ejecutar Amazon EMR en cargas de trabajo de EKS en clústeres IPv6 de Amazon EKS para aprovechar un espacio de direcciones considerablemente mayor y evitar que se agoten las direcciones IPv4 a medida que los entornos escalan. Kubernetes

Para obtener información sobre la creación de un clúster IPv6 de Amazon EKS, consulte las direcciones IPv6 para clústeres, pods y servicios en la guía del usuario de Amazon EKS.

Modelos de envío compatibles

Los siguientes modelos de envío son compatibles con los clústeres IPv6 de Amazon EKS:

  • StartJobRun

  • Terminales interactivos de Spark Connect

  • Amazon SageMaker Unified Studio

  • Operador de chispa

  • Operador Flink

  • Operador Livy

Modelos de envío no compatibles

Los puntos finales de Jupyter Enterprise Gateway (JEG) no son compatibles con los clústeres IPv6.

Modelos de envío que no requieren ninguna configuración adicional

Para los siguientes modelos de envío, puede configurar y enviar las cargas de trabajo de Amazon EMR en un clúster de IPv6 del mismo modo que lo hace con IPv4. No se requiere ninguna configuración adicional:

  • StartJobRun

  • Terminales interactivos de Spark Connect

  • Amazon SageMaker Unified Studio

Operator-based modelos de presentación

Operator-based los modelos de envío requieren una configuración adicional para la compatibilidad con IPv6. En las siguientes secciones se describe la configuración requerida para cada operador.

Operador de chispa

Para ejecutar cargas de trabajo de Spark Operator en un clúster IPv6, agrega la siguiente configuración de Spark a tus SparkApplication especificaciones. Esta configuración es necesaria para todas las versiones compatibles.

spec: sparkConf: "spark.kubernetes.driver.service.ipFamilies": "IPv6"

Esta configuración le indica al Kubernetes cliente que cree el servicio de controladores Spark con la familia de IP IPv6. Sin él, el servicio de controlador se establece de forma predeterminada en IPv4, que no es compatible con un clúster. IPv6-only

Además, en el caso de las emr-7.x versiones, debes aplicar la siguiente solución alternativa configurando esta variable de entorno en la implementación de Spark Operator:

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Tras instalar el operador Spark, ejecuta el siguiente comando para configurar la variable de entorno:

kubectl set env deployment/spark-operator-deployment-name \ KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true \ -n spark-operator-namespace

Esta solución alternativa soluciona un problema conocido relacionado con la verificación del nombre de host de IPv6 activada. GitHub Estas emr-7.x versiones utilizan una versión del Kubernetes cliente fabric8 que depende de la versión OkHttp 3.x, que no supera la verificación del nombre de host TLS al conectarse al servidor de API a través de IPv6. Kubernetes

Para ejecutar cargas de trabajo de Flink Operator en un clúster de IPv6, debe configurar la siguiente variable de entorno tanto en el pod de Flink Operator como en sus módulos de trabajo: FlinkDeployment

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Esta solución alternativa soluciona el mismo problema de verificación del nombre de host IPv6 OkHttp 3.x descrito en la sección Spark Operator. Para obtener más información, consulte la configuración de IPv6 en la documentación de Apache Flink Kubernetes Operator.

Configure la variable de entorno durantehelm install:

helm install my-flink-operator chart \ --set operatorPod.env[0].name=KUBERNETES_DISABLE_HOSTNAME_VERIFICATION \ --set-string operatorPod.env[0].value=true

Inyecta la variable de entorno a través de una plantilla de pod en tu FlinkDeployment YAML:

spec: podTemplate: spec: containers: - name: flink-main-container env: - name: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION value: "true"

Operador de Livy

Para ejecutar las cargas de trabajo de Livy Operator en un clúster IPv6, debe configurar dos cosas:

  1. Anotación del balanceador de cargas de doble pila: añada la siguiente anotación al instalar el diagrama de control de Livy para que el controlador del balanceador de cargas aprovisione un balanceador de AWS cargas de red de doble pila:

    helm install my-livy chart \ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack"
  2. Configuración IPv6 del servicio de controladores de Spark: incluye la configuración cuando envíes trabajos de Spark a través de Livy: spark.kubernetes.driver.service.ipFamilies

    { "conf": { "spark.kubernetes.driver.service.ipFamilies": "IPv6" } }

Versiones compatibles

La siguiente tabla muestra la compatibilidad con IPv6 según el modelo de envío y la versión de Amazon EMR. Las emr-spark-8.x versiones son Spark-only versiones y no incluyen Flink.

Modelo de presentación emr-7.14.0y versiones 7.x posteriores emr-spark-8.0.0 emr-spark-8.1.0+

StartJobRun

✅ Compatible

✅ Compatible

✅ Compatible

Terminales interactivos de Spark Connect

✅ Compatible

✅ Compatible

✅ Compatible

Amazon SageMaker Unified Studio

✅ Compatible

✅ Compatible

✅ Compatible

Operador de chispa

✅ Compatible con 1,2

❌ No es compatible

✅ Compatible con 2

Operador Flink

✅ Compatible con 1

N/A

N/A

Operador Livy

✅ Compatible con 2

✅ Compatible con 2

✅ Compatible con 2

1 Requiere la KUBERNETES_DISABLE_HOSTNAME_VERIFICATION solución alternativa descrita en la sección anterior para este modelo de envío.

2 Requiere la configuración adicional descrita en la sección anterior para este modelo de envío.

Resolución de problemas

Los siguientes son errores comunes que puede encontrar al ejecutar Amazon EMR en cargas de trabajo de EKS en clústeres de IPv6.

Error: el nombre de host o la IP IPv6 esperados están incluidos entre []

java.lang.AssertionError: assertion failed: Expected hostname or IPv6 IP enclosed in [] but got 2600:1f14:31b1:d102:d812::2

Causa: está utilizando una versión de Amazon EMR que no admite IPv6. Las versiones anteriores a la anterior emr-7.14.0 no incluyen las correcciones IPv6 necesarias.

Solución: actualice a una emr-7.14.0 versión posterior. Consulte Versiones compatibles la lista completa de versiones compatibles.

Error: SSLPeerUnverifiedException nombre de host no verificado

javax.net.ssl.SSLPeerUnverifiedException: Hostname fd0f:f96c:1438::1 not verified

Causa: el pod Spark o Flink Operator no tiene configurada la variable de KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true entorno. OkHttp 3.x no supera la verificación del nombre de host TLS cuando el servidor de Kubernetes API usa una dirección IPv6.

Solución: se establece KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true en el pod del operador. Consulte Operador de chispa o Operador Flink.

Error: el valor «IPv4" no válido no está configurado en este clúster

Service "...-driver-svc" is invalid: spec.ipFamilies[0]: Invalid value: "IPv4": not configured on this cluster

Causa: la aplicación Spark no incluye la spark.kubernetes.driver.service.ipFamilies=IPv6 configuración. Sin esta configuración, Spark intenta crear el servicio de controlador con IPv4, lo que un IPv6-only clúster rechaza.

Solución: "spark.kubernetes.driver.service.ipFamilies": "IPv6" agréguelo a su sparkConf (en el caso de Spark Operator) o al conf objeto de su envío por lotes de Livy. Consulte Operador de chispa o Operador de Livy.