View a markdown version of this page

IPv6 クラスターでの EKS での EMR の実行 - Amazon EMR

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

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 \ -n spark-operator-namespace

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

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

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

この回避策は、Spark Operator セクションで説明されているのと同じ OkHttp 3.x IPv6 ホスト名検証の問題に対処します。詳細については、Apache Flink Kubernetes Operator ドキュメントのIPv6 設定」を参照してください。

中に環境変数を設定します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 YAML のポッドテンプレートを使用して環境変数を挿入します。

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

Livy 演算子

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"
  2. 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 演算子」を参照してください。