View a markdown version of this page

Executando o EMR no EKS em clusters IPv6 - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Executando o EMR no EKS em clusters IPv6

Você pode executar o Amazon EMR em cargas de trabalho EKS em clusters IPv6 do Amazon EKS para aproveitar um espaço de endereço significativamente maior e evitar o esgotamento de endereços IPv4 à medida que seus ambientes se expandem. Kubernetes

Para obter informações sobre a criação de um cluster IPv6 do Amazon EKS, consulte Endereços IPv6 para clusters, pods e serviços no Guia do usuário do Amazon EKS.

Modelos de envio compatíveis

Os seguintes modelos de envio são compatíveis com clusters IPv6 do Amazon EKS:

  • StartJobRun

  • Endpoints interativos Spark Connect

  • Amazon SageMaker Unified Studio

  • Operador Spark

  • Operador Flink

  • Operador Livy

Modelos de envio não suportados

Os endpoints do Jupyter Enterprise Gateway (JEG) não são suportados em clusters IPv6.

Modelos de envio que não exigem configuração adicional

Para os seguintes modelos de envio, você pode configurar e enviar cargas de trabalho do Amazon EMR em um cluster IPv6 da mesma forma que você faz para IPv4. Nenhuma configuração adicional é necessária:

  • StartJobRun

  • Endpoints interativos Spark Connect

  • Amazon SageMaker Unified Studio

Operator-based modelos de submissão

Operator-based os modelos de envio exigem configuração adicional para compatibilidade com IPv6. As seções a seguir descrevem a configuração necessária para cada operador.

Operador Spark

Para executar cargas de trabalho do Spark Operator em um cluster IPv6, adicione a seguinte configuração do Spark à sua especificação. SparkApplication Essa configuração é necessária para todas as versões suportadas.

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

Essa configuração instrui o Kubernetes cliente a criar o serviço de driver Spark com a família IP IPv6. Sem ele, o padrão do serviço de driver é IPv4, que não é suportado em um cluster. IPv6-only

Além disso, para emr-7.x versões, você deve aplicar a seguinte solução alternativa definindo essa variável de ambiente na implantação do Spark Operator:

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Depois de instalar o operador Spark, execute o seguinte comando para definir a variável de ambiente:

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

Essa solução alternativa resolve um problema conhecido com a verificação do nome de host IPv6 ativada. GitHub As emr-7.x versões usam uma versão do Kubernetes cliente fabric8 que depende da OkHttp 3.x, que falha na verificação do nome de host TLS ao se conectar ao servidor da Kubernetes API por IPv6.

Para executar cargas de trabalho do Flink Operator em um cluster IPv6, você deve definir a seguinte variável de ambiente no pod do Flink Operator e nos seus pods de trabalho: FlinkDeployment

KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true

Essa solução alternativa resolve o mesmo problema de verificação de nome de host IPv6 OkHttp 3.x descrito na seção Operador do Spark. Para obter mais informações, consulte a configuração IPv6 na documentação do Apache Flink Kubernetes Operator.

Defina a variável de ambiente durantehelm install:

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

Injete a variável de ambiente por meio de um modelo de pod em seu FlinkDeployment YAML:

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

Operador Livy

Para executar cargas de trabalho do Livy Operator em um cluster IPv6, você deve configurar duas coisas:

  1. Anotação do balanceador de carga de pilha dupla — Adicione a seguinte anotação ao instalar o gráfico de leme Livy para que o controlador do balanceador de carga provisione um balanceador de carga de rede de pilha dupla: AWS

    helm install my-livy chart \ --set "service.annotations.service\.beta\.kubernetes\.io/aws-load-balancer-ip-address-type=dualstack"
  2. Configuração IPv6 do serviço de driver Spark — Inclua a spark.kubernetes.driver.service.ipFamilies configuração ao enviar trabalhos do Spark por meio do Livy:

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

Versões compatíveis

A tabela a seguir mostra o suporte a IPv6 por modelo de envio e versão do Amazon EMR. Os emr-spark-8.x lançamentos são Spark-only lançamentos e não incluem o Flink.

Modelo de submissão emr-7.14.0e versões 7.x posteriores emr-spark-8.0.0 emr-spark-8.1.0+

StartJobRun

✅ Suportado

✅ Suportado

✅ Suportado

Endpoints interativos Spark Connect

✅ Suportado

✅ Suportado

✅ Suportado

Amazon SageMaker Unified Studio

✅ Suportado

✅ Suportado

✅ Suportado

Operador Spark

✅ Suportado 1,2

❌ Não suportado

✅ Suportado 2

Operador Flink

✅ Suportado 1

N/A

N/A

Operador Livy

✅ Suportado 2

✅ Suportado 2

✅ Suportado 2

1 Requer a KUBERNETES_DISABLE_HOSTNAME_VERIFICATION solução alternativa descrita na seção anterior para esse modelo de envio.

2 Requer configuração adicional descrita na seção anterior para este modelo de envio.

Solução de problemas

A seguir estão os erros comuns que você pode encontrar ao executar o Amazon EMR em cargas de trabalho EKS em clusters IPv6.

Erro: nome de host esperado ou IP IPv6 incluído em []

java.lang.AssertionError: assertion failed: Expected hostname or IPv6 IP enclosed in [] but got 2600:1f14:31b1:d102:d812::2

Causa: Você está usando uma versão do Amazon EMR que não oferece suporte a IPv6. As versões anteriores emr-7.14.0 não incluem as correções IPv6 necessárias.

Solução: atualize para emr-7.14.0 ou mais tarde. Consulte Versões compatíveis a lista completa das versões suportadas.

Erro: SSLPeerUnverifiedException nome do host não verificado

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

Causa: O pod Spark ou Flink Operator não tem a variável de KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true ambiente definida. OkHttp O 3.x falha na verificação do nome de host TLS quando o servidor da Kubernetes API usa um endereço IPv6.

Solução: Coloque KUBERNETES_DISABLE_HOSTNAME_VERIFICATION=true na cápsula do operador. Consulte Operador Spark ou Operador Flink.

Erro: valor inválido “IPv4" não configurado neste cluster

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

Causa: O aplicativo Spark não inclui a spark.kubernetes.driver.service.ipFamilies=IPv6 configuração. Sem essa configuração, o Spark tenta criar o serviço de driver com IPv4, que um IPv6-only cluster rejeita.

Solução: adicione "spark.kubernetes.driver.service.ipFamilies": "IPv6" ao seu sparkConf (para o Spark Operator) ou ao conf objeto em seu envio de lote Livy. Consulte Operador Spark ou Operador Livy.