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 \ -nspark-operator-namespace
Diese Problemumgehung behebt ein bekanntes Problem mit aktivierter IPv6-Hostnamenüberprüfung. 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
Flink-Operator
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
Stellen Sie die Umgebungsvariable auf dem Flink Operator-Pod ein
Stellen Sie die Umgebungsvariable ein währendhelm install:
helm installmy-flink-operatorchart\ --set operatorPod.env[0].name=KUBERNETES_DISABLE_HOSTNAME_VERIFICATION \ --set-string operatorPod.env[0].value=true
Stellen Sie die Umgebungsvariable in Ihren FlinkDeployment Job-Pods ein
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:
-
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 installmy-livychart\ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack" -
IPv6-Konfiguration des Spark-Treiberdienstes — Schließen Sie die Konfiguration ein, wenn Sie Spark-Jobs über Livy einreichen
spark.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.