

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esecuzione di EMR su EKS su cluster IPv6
<a name="emr-eks-ipv6"></a>

Puoi eseguire Amazon EMR su carichi di lavoro EKS su cluster Amazon EKS IPv6 per sfruttare uno spazio di indirizzi significativamente più ampio ed evitare l'esaurimento degli indirizzi IPv4 man mano che i tuoi ambienti si espandono. Kubernetes

Per informazioni sulla creazione di un cluster Amazon EKS IPv6, consulta gli indirizzi [ IPv6 per cluster, pod e servizi nella Amazon EKS User Guide. ](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html) * *

## Modelli di invio supportati
<a name="emr-eks-ipv6-supported-models"></a>

I seguenti modelli di invio sono supportati sui cluster Amazon EKS IPv6:
+ `StartJobRun`
+ Endpoint interattivi Spark Connect
+ Amazon Unified Studio SageMaker 
+ Operatore Spark
+ Operatore Flink
+ Operatore Livy

**Modelli di invio non supportati**  
Gli endpoint Jupyter Enterprise Gateway (JEG) non sono supportati sui cluster IPv6.

## Modelli di invio che non richiedono configurazioni aggiuntive
<a name="emr-eks-ipv6-no-config"></a>

Per i seguenti modelli di invio, puoi configurare e inviare carichi di lavoro Amazon EMR su un cluster IPv6 nello stesso modo in cui lo fai per IPv4. Non è richiesta alcuna configurazione aggiuntiva:
+ `StartJobRun`
+ Endpoint interattivi Spark Connect
+ Amazon Unified Studio SageMaker 

## Operator-based modelli di invio
<a name="emr-eks-ipv6-operator-config"></a>

Operator-based i modelli di invio richiedono una configurazione aggiuntiva per la compatibilità IPv6. Le sezioni seguenti descrivono la configurazione richiesta per ciascun operatore.

### Operatore Spark
<a name="emr-eks-ipv6-spark-operator"></a>

Per eseguire i carichi di lavoro di Spark Operator su un cluster IPv6, aggiungi la seguente configurazione di Spark alle tue specifiche. `SparkApplication` Questa configurazione è richiesta per tutte le versioni supportate.

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

Questa configurazione indica al Kubernetes client di creare il servizio driver Spark con la famiglia IP IPv6. Senza di esso, il servizio driver è impostato di default su IPv4, che non è supportato su un cluster. IPv6-only 

Inoltre, per le `emr-7.x` versioni, è necessario applicare la seguente soluzione alternativa impostando questa variabile di ambiente nella distribuzione di Spark Operator:

```
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
```

Dopo aver installato l'operatore Spark, esegui il comando seguente per impostare la variabile di ambiente:

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

Questa soluzione alternativa risolve un problema [ noto relativo alla verifica del nome host IPv6 attiva. ](https://github.com/square/okhttp/issues/5885) GitHub Le `emr-7.x` versioni utilizzano una versione del Kubernetes client fabric8 che dipende da OkHttp 3.x, che non supera la verifica del nome host TLS durante la connessione al server API tramite IPv6. Kubernetes

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

Per eseguire i carichi di lavoro di Flink Operator su un cluster IPv6, è necessario impostare la seguente variabile di ambiente sia sul pod Flink Operator che sui job pod: `FlinkDeployment`

```
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
```

Questa soluzione alternativa risolve lo stesso problema di verifica del nome host IPv6 OkHttp 3.x descritto nella sezione Spark Operator. Per ulteriori informazioni, consulta la configurazione [https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration) IPv6 nella documentazione di Apache Flink Kubernetes Operator.

#### Imposta la variabile di ambiente nel pod Flink Operator
<a name="emr-eks-ipv6-flink-operator-pod"></a>

Imposta la variabile di ambiente 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
```

#### Imposta la variabile di ambiente nei tuoi FlinkDeployment job pod
<a name="emr-eks-ipv6-flink-job-pods"></a>

Inserisci la variabile d'ambiente tramite un modello di pod nel tuo `FlinkDeployment` YAML:

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

### Operatore Livy
<a name="emr-eks-ipv6-livy-operator"></a>

Per eseguire i carichi di lavoro di Livy Operator su un cluster IPv6, è necessario configurare due elementi:

1. **Annotazione Dualstack Load Balancer**: aggiungete la seguente annotazione durante l'installazione del diagramma Helm di Livy in modo che il Load Balancer Controller esegua il provisioning di un Network Load Balancer dualstack: AWS 

   ```
   helm install {{my-livy}} {{chart}} \
     --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack"
   ```

1. **Configurazione IPv6 del servizio driver Spark: includi la configurazione quando invii lavori Spark tramite Livy: ** `spark.kubernetes.driver.service.ipFamilies`

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

## Rilasci supportati
<a name="emr-eks-ipv6-releases"></a>

La tabella seguente mostra il supporto IPv6 in base al modello di invio e alla versione Amazon EMR. Le `emr-spark-8.x` release sono Spark-only release e non includono Flink.


| Modello di invio | `emr-7.14.0`e versioni 7.x successive | `emr-spark-8.0.0` | `emr-spark-8.1.0`\+ | 
| --- | --- | --- | --- | 
| StartJobRun | ✅ Supportato | ✅ Supportato | ✅ Supportato | 
| Endpoint interattivi Spark Connect | ✅ Supportato | ✅ Supportato | ✅ Supportato | 
| Amazon SageMaker Unified Studio | ✅ Supportato | ✅ Supportato | ✅ Supportato | 
| Operatore Spark | ✅ Supportato 1,2   | ❌ Non supportato | ✅ Supportato  2  | 
| Operatore Flink | ✅ Supportato 1   | N/A | N/A | 
| Operatore Livy | ✅ Supportato 2   | ✅ Supportato  2  | ✅ Supportato  2  | 

1  Richiede la `KUBERNETES_DISABLE_HOSTNAME_VERIFICATION` soluzione alternativa descritta nella sezione precedente per questo modello di invio.

2  Richiede una configurazione aggiuntiva descritta nella sezione precedente per questo modello di invio.

## Risoluzione dei problemi
<a name="emr-eks-ipv6-troubleshooting"></a>

Di seguito sono riportati gli errori più comuni che potresti riscontrare durante l'esecuzione di Amazon EMR su carichi di lavoro EKS su cluster IPv6.

### Errore: nome host o IP IPv6 previsto racchiuso tra []
<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: ** stai utilizzando una versione di Amazon EMR che non supporta IPv6. Le versioni precedenti a questa `emr-7.14.0` non includono le correzioni IPv6 necessarie.

**Soluzione: ** aggiornamento a `emr-7.14.0` o successivo. Consulta [Rilasci supportati](#emr-eks-ipv6-releases) l'elenco completo delle versioni supportate.

### Errore: SSLPeerUnverifiedException nome host non verificato
<a name="emr-eks-ipv6-troubleshoot-okhttp"></a>

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

**Causa: ** nel pod Spark o Flink Operator non è impostata la variabile di `KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true` ambiente. OkHttp 3.x non supera la verifica del nome host TLS quando il server Kubernetes API utilizza un indirizzo IPv6.

**Soluzione: ** `KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true` impostata sul pod dell'operatore. Vedi [Operatore Spark](#emr-eks-ipv6-spark-operator) o [Operatore Flink](#emr-eks-ipv6-flink-operator).

### Errore: valore non valido «IPv4" non configurato su questo cluster
<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: ** l'applicazione Spark non include la configurazione. `spark.kubernetes.driver.service.ipFamilies=IPv6` Senza questa impostazione, Spark tenta di creare il servizio driver con IPv4, che un cluster rifiuta. IPv6-only 

**Soluzione: ** aggiungilo `"spark.kubernetes.driver.service.ipFamilies": "IPv6"` al tuo `sparkConf` (per Spark Operator) o all'`conf`oggetto nel tuo invio batch di Livy. Vedi [Operatore Spark](#emr-eks-ipv6-spark-operator) o [Operatore Livy](#emr-eks-ipv6-livy-operator).