

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
<a name="emr-eks-ipv6"></a>

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](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html). * *

## Unterstützte Einreichungsmodelle
<a name="emr-eks-ipv6-supported-models"></a>

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
<a name="emr-eks-ipv6-no-config"></a>

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
<a name="emr-eks-ipv6-operator-config"></a>

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
<a name="emr-eks-ipv6-spark-operator"></a>

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. ](https://github.com/square/okhttp/issues/5885) 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

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

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 ](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration) in der Apache Flink Kubernetes Operator-Dokumentation.

#### Stellen Sie die Umgebungsvariable auf dem Flink Operator-Pod ein
<a name="emr-eks-ipv6-flink-operator-pod"></a>

Stellen Sie die Umgebungsvariable ein während`helm install`:

```
helm install {{my-flink-operator}} {{chart}} \
  --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
<a name="emr-eks-ipv6-flink-job-pods"></a>

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
<a name="emr-eks-ipv6-livy-operator"></a>

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"
   ```

1. **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
<a name="emr-eks-ipv6-releases"></a>

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.0`und 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
<a name="emr-eks-ipv6-troubleshooting"></a>

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

**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](#emr-eks-ipv6-releases)

### Fehler: SSLPeerUnverifiedException Hostname nicht verifiziert
<a name="emr-eks-ipv6-troubleshoot-okhttp"></a>

```
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](#emr-eks-ipv6-spark-operator) oder [Flink-Operator](#emr-eks-ipv6-flink-operator).

### Fehler: Ungültiger Wert „IPv4“ ist auf diesem Cluster nicht konfiguriert
<a name="emr-eks-ipv6-troubleshoot-ipfamilies"></a>

```
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](#emr-eks-ipv6-spark-operator) oder [Livy Operator](#emr-eks-ipv6-livy-operator).