View a markdown version of this page

EMR auf EKS auf IPv6-Clustern ausführen - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

EMR auf EKS auf IPv6-Clustern ausführen

Sie können Amazon EMR auf EKS-Workloads auf IPv6-Amazon-EKS-Clustern ausführen, um einen deutlich größeren Adressraum zu nutzen und eine Erschöpfung der IPv4-Adressen zu vermeiden, wenn Ihre Umgebungen skalieren. Kubernetes

Informationen zum Erstellen eines IPv6-Amazon-EKS-Clusters finden Sie im Amazon EKS-Benutzerhandbuch unter IPv6-Adressen für Cluster, Pods und Services.

Unterstützte Einreichungsmodelle

Die folgenden Übermittlungsmodelle werden auf IPv6-Amazon-EKS-Clustern unterstützt:

  • StartJobRun

  • Interaktive Spark Connect-Endpunkte

  • Amazon SageMaker Unified Studio

  • Funken-Operator

  • Flink-Operator

  • Livy Operator

Nicht unterstützte Einreichungsmodelle

Jupyter Enterprise Gateway (JEG) -Endpunkte werden auf IPv6-Clustern nicht unterstützt.

Einreichungsmodelle, die keine zusätzliche Konfiguration erfordern

Für die folgenden Übermittlungsmodelle können Sie Amazon EMR-Workloads auf einem IPv6-Cluster auf die gleiche Weise einrichten und einreichen wie bei IPv4. Es ist keine zusätzliche Konfiguration erforderlich:

  • StartJobRun

  • Interaktive Spark Connect-Endpunkte

  • Amazon SageMaker Unified Studio

Operator-based Modelle für die Einreichung

Operator-based Einreichungsmodelle erfordern eine zusätzliche Konfiguration für die IPv6-Kompatibilität. In den folgenden Abschnitten wird die erforderliche Konfiguration für jeden Operator beschrieben.

Spark-Operator

Um Spark Operator-Workloads auf einem IPv6-Cluster auszuführen, fügen Sie Ihrer SparkApplication Spezifikation die folgende Spark-Konfiguration hinzu. Diese Konfiguration ist für alle unterstützten Versionen erforderlich.

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

Diese Konfiguration weist den Kubernetes Client an, den Spark-Treiberdienst mit der IPv6-IP-Familie zu erstellen. Ohne sie verwendet der Treiberdienst standardmäßig IPv4, was auf einem Cluster nicht unterstützt wird. IPv6-only

Darüber hinaus müssen Sie für emr-7.x Releases die folgende Problemumgehung anwenden, indem Sie diese Umgebungsvariable in der Spark Operator-Bereitstellung festlegen:

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Führen Sie nach der Installation des Spark-Operators den folgenden Befehl aus, um die Umgebungsvariable festzulegen:

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

Diese Problemumgehung behebt ein bekanntes Problem mit aktivierter IPv6-Hostnamenüberprüfung. GitHub In den emr-7.x Versionen wird eine Version des Kubernetes Fabric8-Clients verwendet, die von OkHttp 3.x abhängig ist und bei der die TLS-Hostnamen-Überprüfung fehlschlägt, wenn eine Verbindung zum API-Server über IPv6 hergestellt wird. Kubernetes

Um Flink Operator-Workloads auf einem IPv6-Cluster auszuführen, müssen Sie die folgende Umgebungsvariable sowohl auf dem Flink Operator-Pod als auch auf Ihren Job-Pods festlegen: FlinkDeployment

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Diese Problemumgehung behebt das gleiche OkHttp 3.x-Problem bei der IPv6-Hostnamen-Überprüfung, das im Abschnitt Spark Operator beschrieben wird. Weitere Informationen finden Sie unter IPv6-Konfiguration in der Apache Flink Kubernetes Operator-Dokumentation.

Stellen Sie die Umgebungsvariable ein währendhelm install:

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

Fügen Sie die Umgebungsvariable über eine Pod-Vorlage in Ihr FlinkDeployment YAML ein:

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

Livy Operator

Um Livy Operator-Workloads auf einem IPv6-Cluster auszuführen, müssen Sie zwei Dinge konfigurieren:

  1. Dualstack-Load Balancer-Annotation — Fügen Sie bei der Installation des Livy-Helm-Diagramms die folgende Anmerkung hinzu, damit der Load Balancer Controller einen DualStack-Network Load AWS Balancer bereitstellt:

    helm install my-livy chart \ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack"
  2. IPv6-Konfiguration des Spark-Treiberdienstes — Schließen Sie die Konfiguration ein, wenn Sie Spark-Jobs über Livy einreichenspark.kubernetes.driver.service.ipFamilies:

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

Unterstützte Versionen

Die folgende Tabelle zeigt die IPv6-Unterstützung nach Einreichungsmodell und Amazon EMR-Version. Die emr-spark-8.x Versionen sind Spark-only Releases und enthalten Flink nicht.

Modell für die Einreichung emr-7.14.0und spätere 7.x-Versionen emr-spark-8.0.0 emr-spark-8.1.0+

StartJobRun

✅ Unterstützt

✅ Unterstützt

✅ Unterstützt

Interaktive Spark Connect-Endpunkte

✅ Unterstützt

✅ Unterstützt

✅ Unterstützt

Amazon SageMaker Unified Studio

✅ Unterstützt

✅ Unterstützt

✅ Unterstützt

Spark Operator

✅ Unterstützt 1,2

❌ Nicht unterstützt

✅ Unterstützt 2

Flink-Operator

✅ Unterstützt 1

N/A

N/A

Livy Operator

✅ Unterstützt 2

✅ Unterstützt 2

✅ Unterstützt 2

1 Erfordert die im vorherigen Abschnitt für dieses Übermittlungsmodell beschriebene KUBERNETES_DISABLE_HOSTNAME_VERIFICATION Problemumgehung.

2 Erfordert eine zusätzliche Konfiguration, die im vorherigen Abschnitt für dieses Einreichungsmodell beschrieben wurde.

Fehlerbehebung

Die folgenden Fehler können häufig auftreten, wenn Sie Amazon EMR auf EKS-Workloads auf IPv6-Clustern ausführen.

Fehler: Erwarteter Hostname oder IPv6-IP, eingeschlossen in []

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

Ursache: Sie verwenden eine Amazon EMR-Version, die IPv6 nicht unterstützt. Ältere Versionen enthalten emr-7.14.0 nicht die erforderlichen IPv6-Korrekturen.

Lösung: Führen Sie ein Upgrade auf emr-7.14.0 oder höher durch. Eine vollständige Liste der unterstützten Versionen finden Sie unter. Unterstützte Versionen

Fehler: SSLPeerUnverifiedException Hostname nicht verifiziert

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

Ursache: Für den Spark- oder Flink Operator-Pod ist die KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true Umgebungsvariable nicht gesetzt. OkHttp 3.x schlägt bei der TLS-Hostnamen-Überprüfung fehl, wenn der Kubernetes API-Server eine IPv6-Adresse verwendet.

Lösung: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true Auf dem Operator-Pod einstellen. Weitere Informationen unter Spark-Operator oder Flink-Operator.

Fehler: Ungültiger Wert „IPv4“ ist auf diesem Cluster nicht konfiguriert

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

Ursache: Die Spark-Anwendung enthält die spark.kubernetes.driver.service.ipFamilies=IPv6 Konfiguration nicht. Ohne diese Einstellung versucht Spark, den Treiberdienst mit IPv4 zu erstellen, was ein IPv6-only Cluster ablehnt.

Lösung: Fügen Sie "spark.kubernetes.driver.service.ipFamilies": "IPv6" es Ihrem sparkConf (für Spark Operator) oder dem conf Objekt in Ihrer Livy-Batch-Übermittlung hinzu. Weitere Informationen unter Spark-Operator oder Livy Operator.