

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

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 ](https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html) no Guia do usuário do * Amazon EKS. *

## Modelos de envio compatíveis
<a name="emr-eks-ipv6-supported-models"></a>

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

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

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

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

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

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 ](https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/deployment/configuration/#ipv6-configuration) na documentação do Apache Flink Kubernetes Operator.

#### Defina a variável de ambiente no pod do Flink Operator
<a name="emr-eks-ipv6-flink-operator-pod"></a>

Defina a variável de ambiente durante`helm install`:

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

#### Defina a variável de ambiente em seus FlinkDeployment pods de trabalho
<a name="emr-eks-ipv6-flink-job-pods"></a>

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

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

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

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

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

**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](#emr-eks-ipv6-releases) a lista completa das versões suportadas.

### Erro: SSLPeerUnverifiedException nome do host não verificado
<a name="emr-eks-ipv6-troubleshoot-okhttp"></a>

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

### Erro: valor inválido “IPv4" não configurado neste cluster
<a name="emr-eks-ipv6-troubleshoot-ipfamilies"></a>

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