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 \ -nspark-operator-namespace
Questa soluzione alternativa risolve un problema noto relativo alla verifica del nome host IPv6 attiva. 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
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
Imposta la variabile di ambiente nel pod Flink Operator
Imposta la variabile di ambiente durantehelm install:
helm installmy-flink-operatorchart\ --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
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:
-
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 installmy-livychart\ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack" -
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.