

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IPv6 クラスターでの EKS での EMR の実行
<a name="emr-eks-ipv6"></a>

Amazon EMR on EKS ワークロードを IPv6 Amazon EKS クラスターで実行して、大幅に大きなアドレススペースを活用し、Kubernetes環境のスケーリングに伴う IPv4 アドレスの枯渇を回避できます。

IPv6 Amazon EKS クラスターの作成については、*「Amazon EKS* [ユーザーガイド」の「クラスター、ポッド、サービスの IPv6 アドレス](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html)」を参照してください。

## サポートされている送信モデル
<a name="emr-eks-ipv6-supported-models"></a>

IPv6 Amazon EKS クラスターでは、次の送信モデルがサポートされています。
+ `StartJobRun`
+ Spark Connect インタラクティブエンドポイント
+ Amazon SageMaker Unified Studio
+ Spark 演算子
+ Flink 演算子
+ Livy 演算子

**サポートされていない送信モデル**  
Jupyter Enterprise Gateway (JEG) エンドポイントは、IPv6 クラスターではサポートされていません。

## 追加設定を必要としない送信モデル
<a name="emr-eks-ipv6-no-config"></a>

次の送信モデルでは、IPv6 クラスターで Amazon EMR ワークロードをセットアップして送信できます。 IPv4 追加の設定は必要ありません。
+ `StartJobRun`
+ Spark Connect インタラクティブエンドポイント
+ Amazon SageMaker Unified Studio

## オペレーターベースの送信モデル
<a name="emr-eks-ipv6-operator-config"></a>

オペレータベースの送信モデルでは、IPv6 との互換性のために追加の設定が必要です。以下のセクションでは、各演算子に必要な設定について説明します。

### Spark 演算子
<a name="emr-eks-ipv6-spark-operator"></a>

IPv6 クラスターで Spark Operator ワークロードを実行するには、次の Spark 設定を`SparkApplication`仕様に追加します。この設定は、サポートされているすべてのリリースで必要です。

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

この設定では、IPv6 IP ファミリーを使用して Spark ドライバーサービスを作成するようKubernetesクライアントに指示します。これがない場合、ドライバーサービスはデフォルトで IPv4 になります。IPv6-onlyクラスターではサポートされていません。

さらに、 `emr-7.x`リリースでは、Spark Operator デプロイでこの環境変数を設定して、次の回避策を適用する必要があります。

```
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
```

Spark 演算子をインストールしたら、次のコマンドを実行して環境変数を設定します。

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

この回避策は、GitHub での [ IPv6 ホスト名の検証に関する既知の問題に対処](https://github.com/square/okhttp/issues/5885)します。`emr-7.x` リリースでは、OkHttp 3.x に依存するバージョンの Fabric8 Kubernetesクライアントが使用されており、IPv6 経由で Kubernetes API サーバーに接続すると TLS ホスト名の検証に失敗します。

### Flink 演算子
<a name="emr-eks-ipv6-flink-operator"></a>

IPv6 クラスターで Flink Operator ワークロードを実行するには、Flink Operator ポッドと`FlinkDeployment`ジョブポッドの両方で次の環境変数を設定する必要があります。

```
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
```

この回避策は、Spark Operator セクションで説明されているのと同じ OkHttp 3.x IPv6 ホスト名検証の問題に対処します。詳細については、Apache Flink Kubernetes Operator ドキュメントの[IPv6 設定](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration)」を参照してください。

#### Flink Operator ポッドで環境変数を設定する
<a name="emr-eks-ipv6-flink-operator-pod"></a>

中に環境変数を設定します`helm install`。

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

#### FlinkDeployment ジョブポッドに環境変数を設定する
<a name="emr-eks-ipv6-flink-job-pods"></a>

`FlinkDeployment` YAML のポッドテンプレートを使用して環境変数を挿入します。

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

### Livy 演算子
<a name="emr-eks-ipv6-livy-operator"></a>

IPv6 クラスターで Livy Operator ワークロードを実行するには、次の 2 つの設定を行う必要があります。

1. **デュアルスタックロードバランサー注釈** — Livy helm チャートをインストールするときに、 AWS Load Balancerコントローラーがデュアルスタック Network Load Balancer をプロビジョニングするように、次の注釈を追加します。

   ```
   helm install {{my-livy}} {{chart}} \
     --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack"
   ```

1. **Spark ドライバーサービス IPv6 設定** — Livy 経由で Spark ジョブを送信するときに`spark.kubernetes.driver.service.ipFamilies`設定を含めます。

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

## サポートされているリリース
<a name="emr-eks-ipv6-releases"></a>

次の表は、送信モデルと Amazon EMR リリースによる IPv6 サポートを示しています。`emr-spark-8.x` リリースは Spark のみのリリースであり、Flink は含まれていません。


| 送信モデル | `emr-7.14.0` 以降の 7.x リリース | `emr-spark-8.0.0` | `emr-spark-8.1.0`\+ | 
| --- | --- | --- | --- | 
| StartJobRun | ✅ サポートされている | ✅ サポートされている | ✅ サポートされている | 
| Spark Connect インタラクティブエンドポイント | ✅ サポートされている | ✅ サポートされている | ✅ サポートされている | 
| Amazon SageMaker Unified Studio | ✅ サポートされている | ✅ サポートされている | ✅ サポートされている | 
| Spark 演算子 | ✅ サポートされている 1、2 | ❌ サポートされていない | ✅ サポートされている 2 | 
| Flink 演算子 | ✅ サポートされている 1 | 該当なし | 該当なし | 
| Livy 演算子 | ✅ サポートされている 2 | ✅ サポートされている 2 | ✅ サポートされている 2 | 

1 この送信モデルには、前のセクションで説明した`KUBERNETES_DISABLE_HOSTNAME_VERIFICATION`回避策が必要です。

2 この送信モデルには、前のセクションで説明した追加の設定が必要です。

## トラブルシューティング
<a name="emr-eks-ipv6-troubleshooting"></a>

以下は、IPv6 クラスターで Amazon EMR on EKS ワークロードを実行するときに発生する可能性がある一般的なエラーです。

### エラー: [] で囲まれた想定ホスト名または IPv6 IP
<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
```

**原因:** IPv6 をサポートしていない Amazon EMR リリースを使用しています。より前のリリースには、必要な IPv6 修正`emr-7.14.0`は含まれていません。

**解決策:** `emr-7.14.0`以降にアップグレードします。サポートされているリリースの完全なリスト[サポートされているリリース](#emr-eks-ipv6-releases)については、「」を参照してください。

### エラー: SSLPeerUnverifiedException ホスト名が検証されていません
<a name="emr-eks-ipv6-troubleshoot-okhttp"></a>

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

**原因:** Spark または Flink Operator ポッドに`KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true`環境変数が設定されていません。Kubernetes API サーバーが IPv6 アドレスを使用する場合、OkHttp 3.x は TLS ホスト名の検証に失敗します。

**解決策:** オペレータポッド`KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true`で を設定します。「[Spark 演算子](#emr-eks-ipv6-spark-operator)」または「[Flink 演算子](#emr-eks-ipv6-flink-operator)」を参照してください。

### エラー: このクラスターで無効な値IPv4」が設定されていません
<a name="emr-eks-ipv6-troubleshoot-ipfamilies"></a>

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

**原因:** Spark アプリケーションに `spark.kubernetes.driver.service.ipFamilies=IPv6`設定が含まれていません。この設定がないと、Spark は IPv6 専用クラスターが拒否する IPv4 IPv6-only を使用してドライバーサービスを作成しようとします。

**解決策:** `"spark.kubernetes.driver.service.ipFamilies": "IPv6"` `sparkConf` (Spark Operator の場合) または Livy バッチ送信の `conf` オブジェクトに を追加します。「[Spark 演算子](#emr-eks-ipv6-spark-operator)」または「[Livy 演算子](#emr-eks-ipv6-livy-operator)」を参照してください。