翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
IPv6 クラスターでの EKS での EMR の実行
Amazon EMR on EKS ワークロードを IPv6 Amazon EKS クラスターで実行して、大幅に大きなアドレススペースを活用し、Kubernetes環境のスケーリングに伴う IPv4 アドレスの枯渇を回避できます。
IPv6 Amazon EKS クラスターの作成については、「Amazon EKS ユーザーガイド」の「クラスター、ポッド、サービスの IPv6 アドレス」を参照してください。
サポートされている送信モデル
IPv6 Amazon EKS クラスターでは、次の送信モデルがサポートされています。
-
StartJobRun -
Spark Connect インタラクティブエンドポイント
-
Amazon SageMaker Unified Studio
-
Spark 演算子
-
Flink 演算子
-
Livy 演算子
サポートされていない送信モデル
Jupyter Enterprise Gateway (JEG) エンドポイントは、IPv6 クラスターではサポートされていません。
追加設定を必要としない送信モデル
次の送信モデルでは、IPv6 クラスターで Amazon EMR ワークロードをセットアップして送信できます。 IPv4 追加の設定は必要ありません。
-
StartJobRun -
Spark Connect インタラクティブエンドポイント
-
Amazon SageMaker Unified Studio
オペレーターベースの送信モデル
オペレータベースの送信モデルでは、IPv6 との互換性のために追加の設定が必要です。以下のセクションでは、各演算子に必要な設定について説明します。
Spark 演算子
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 \ -nspark-operator-namespace
この回避策は、GitHub での IPv6 ホスト名の検証に関する既知の問題に対処emr-7.x リリースでは、OkHttp 3.x に依存するバージョンの Fabric8 Kubernetesクライアントが使用されており、IPv6 経由で Kubernetes API サーバーに接続すると TLS ホスト名の検証に失敗します。
Flink 演算子
IPv6 クラスターで Flink Operator ワークロードを実行するには、Flink Operator ポッドとFlinkDeploymentジョブポッドの両方で次の環境変数を設定する必要があります。
KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true
この回避策は、Spark Operator セクションで説明されているのと同じ OkHttp 3.x IPv6 ホスト名検証の問題に対処します。詳細については、Apache Flink Kubernetes Operator ドキュメントのIPv6 設定
Flink Operator ポッドで環境変数を設定する
中に環境変数を設定しますhelm install。
helm installmy-flink-operatorchart\ --set operatorPod.env[0].name=KUBERNETES_DISABLE_HOSTNAME_VERIFICATION \ --set-string operatorPod.env[0].value=true
FlinkDeployment ジョブポッドに環境変数を設定する
FlinkDeployment YAML のポッドテンプレートを使用して環境変数を挿入します。
spec: podTemplate: spec: containers: - name: flink-main-container env: - name: KUBERNETES_DISABLE_HOSTNAME_VERIFICATION value: "true"
Livy 演算子
IPv6 クラスターで Livy Operator ワークロードを実行するには、次の 2 つの設定を行う必要があります。
-
デュアルスタックロードバランサー注釈 — Livy helm チャートをインストールするときに、 AWS Load Balancerコントローラーがデュアルスタック Network Load Balancer をプロビジョニングするように、次の注釈を追加します。
helm installmy-livychart\ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack" -
Spark ドライバーサービス IPv6 設定 — Livy 経由で Spark ジョブを送信するときに
spark.kubernetes.driver.service.ipFamilies設定を含めます。{ "conf": { "spark.kubernetes.driver.service.ipFamilies": "IPv6" } }
サポートされているリリース
次の表は、送信モデルと 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 この送信モデルには、前のセクションで説明した追加の設定が必要です。
トラブルシューティング
以下は、IPv6 クラスターで Amazon EMR on EKS ワークロードを実行するときに発生する可能性がある一般的なエラーです。
エラー: [] で囲まれた想定ホスト名または IPv6 IP
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以降にアップグレードします。サポートされているリリースの完全なリストサポートされているリリースについては、「」を参照してください。
エラー: SSLPeerUnverifiedException ホスト名が検証されていません
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 演算子」または「Flink 演算子」を参照してください。
エラー: このクラスターで無効な値IPv4」が設定されていません
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 演算子」または「Livy 演算子」を参照してください。