

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
<a name="emr-eks-ipv6"></a>

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 ](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html) en la guía del usuario de Amazon EKS. * *

## Modelos de envío compatibles
<a name="emr-eks-ipv6-supported-models"></a>

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
<a name="emr-eks-ipv6-no-config"></a>

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
<a name="emr-eks-ipv6-operator-config"></a>

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
<a name="emr-eks-ipv6-spark-operator"></a>

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. ](https://github.com/square/okhttp/issues/5885) 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

### Operador Flink
<a name="emr-eks-ipv6-flink-operator"></a>

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 ](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration) en la documentación de Apache Flink Kubernetes Operator.

#### Configure la variable de entorno en el pod Flink Operator
<a name="emr-eks-ipv6-flink-operator-pod"></a>

Configure la variable de entorno durante`helm install`:

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

#### Configure la variable de entorno en sus módulos de FlinkDeployment trabajo
<a name="emr-eks-ipv6-flink-job-pods"></a>

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
<a name="emr-eks-ipv6-livy-operator"></a>

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"
   ```

1. **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
<a name="emr-eks-ipv6-releases"></a>

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.0`y 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
<a name="emr-eks-ipv6-troubleshooting"></a>

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 []
<a name="emr-eks-ipv6-troubleshoot-unsupported"></a>

```
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](#emr-eks-ipv6-releases) la lista completa de versiones compatibles.

### Error: SSLPeerUnverifiedException nombre de host no verificado
<a name="emr-eks-ipv6-troubleshoot-okhttp"></a>

```
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](#emr-eks-ipv6-spark-operator) o [Operador Flink](#emr-eks-ipv6-flink-operator).

### Error: el valor «IPv4" no válido no está configurado en este clúster
<a name="emr-eks-ipv6-troubleshoot-ipfamilies"></a>

```
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](#emr-eks-ipv6-spark-operator) o [Operador de Livy](#emr-eks-ipv6-livy-operator).