View a markdown version of this page

Esecuzione di EMR su EKS su cluster IPv6 - Amazon EMR

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

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.

Modelli di invio supportati

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

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

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

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. 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

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 IPv6 nella documentazione di Apache Flink Kubernetes Operator.

Imposta la variabile di ambiente durantehelm install:

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

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

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"
  2. 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

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.0e 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

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 []

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 l'elenco completo delle versioni supportate.

Errore: SSLPeerUnverifiedException nome host non verificato

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 o Operatore Flink.

Errore: valore non valido «IPv4" non configurato su questo cluster

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'confoggetto nel tuo invio batch di Livy. Vedi Operatore Spark o Operatore Livy.