

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á.

# Uso do Kubernetes nativo do Flink
<a name="jobruns-flink-native-kubernetes"></a>

As versões 6.13.0 e superiores do Amazon EMR oferecem suporte ao Kubernetes nativo para Flink como uma ferramenta de linha de comando que você pode usar para enviar e executar aplicações do Flink para um cluster do Amazon EMR no EKS.

**Topics**
+ [Configuração do Kubernetes nativo para Flink para o Amazon EMR no EKS](jobruns-flink-native-kubernetes-setup.md)
+ [Conceitos básicos do Kubernetes nativo para Flink para o Amazon EMR no EKS](jobruns-flink-native-kubernetes-getting-started.md)
+ [Requisitos de segurança da conta JobManager de serviço Flink para Kubernetes nativo](jobruns-flink-native-kubernetes-security-requirements.md)

# Configuração do Kubernetes nativo para Flink para o Amazon EMR no EKS
<a name="jobruns-flink-native-kubernetes-setup"></a>

Conclua as tarefas apresentadas a seguir para se preparar antes de executar uma aplicação com a CLI do Flink no Amazon EMR no EKS. Se você já se inscreveu na Amazon Web Services (AWS) e usou o Amazon EKS, está com quase tudo pronto para usar o Amazon EMR no EKS. Se você já completou algum dos pré-requisitos, pode ignorá-los e passar para os próximos.
+ **[Instale ou atualize para a versão mais recente do AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)** — Se você já instalou o AWS CLI, confirme se você tem a versão mais recente.
+ **[Comece a usar o Amazon EKS (eksctl):](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) **siga as etapas para criar um cluster do Kubernetes com nós no Amazon EKS.
+ **[Selecione um URI de imagem base do Amazon EMR](docker-custom-images-tag.md) (versão 6.13.0 ou superiores)**: o comando do Kubernetes para Flink é compatível com as versões 6.13.0 e superiores do Amazon EMR.
+ Confirme se a conta JobManager de serviço tem as permissões apropriadas para criar e assistir TaskManager pods. Para obter mais informações, consulte [Requisitos de segurança da conta JobManager de serviço do Flink para o Kubernetes nativo](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-native-kubernetes-security-requirements.html).
+ Configure seu [perfil de credenciais locais da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).
+ [Crie ou atualize um arquivo kubeconfig para um cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) no qual você deseja executar as aplicações do Flink.

# Conceitos básicos do Kubernetes nativo para Flink para o Amazon EMR no EKS
<a name="jobruns-flink-native-kubernetes-getting-started"></a>

Essas etapas mostram como configurar, definir uma conta de serviço e executar uma aplicação do Flink. O Kubernetes nativo para Flink é usado na implantação do Flink em um cluster do Kubernetes em execução.

## Como configurar e executar uma aplicação do Flink
<a name="jobruns-flink-native-kubernetes-getting-started-run-application"></a>

As versões 6.13.0 e posteriores do Amazon EMR oferecem suporte ao Kubernetes nativo para Flink para a execução de aplicações do Flink em um cluster do Amazon EKS. Para executar uma aplicação do Flink, siga estas etapas:

1. Antes de executar uma aplicação do Flink com o comando do Kubernetes nativo para Flink, conclua as etapas em [Configuração do Kubernetes nativo para Flink para o Amazon EMR no EKS](jobruns-flink-native-kubernetes-setup.md).

1. [Download e instalação do Flink](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/try-flink/local_installation).

1. Defina os valores para as variáveis ​​de ambiente a seguir.

   ```
   #Export the FLINK_HOME environment variable to your local installation of Flink
   export FLINK_HOME=/usr/local/bin/flink #Will vary depending on your installation
   export NAMESPACE=flink
   export CLUSTER_ID=flink-application-cluster
   export IMAGE=<123456789012.dkr.ecr.sample-Região da AWS-.amazonaws.com/flink/emr-6.13.0-flink:latest>
   export FLINK_SERVICE_ACCOUNT=emr-containers-sa-flink
   export FLINK_CLUSTER_ROLE_BINDING=emr-containers-crb-flink
   ```

1. Crie uma conta de serviço para gerenciar os recursos do Kubernetes.

   ```
   kubectl create serviceaccount $FLINK_SERVICE_ACCOUNT -n $NAMESPACE
   kubectl create clusterrolebinding $FLINK_CLUSTER_ROLE_BINDING --clusterrole=edit --serviceaccount=$NAMESPACE:$FLINK_SERVICE_ACCOUNT
   ```

1. Execute o comando `run-application` da CLI.

   ```
   $FLINK_HOME/bin/flink run-application \
       --target kubernetes-application \
       -Dkubernetes.namespace=$NAMESPACE \
       -Dkubernetes.cluster-id=$CLUSTER_ID \
       -Dkubernetes.container.image.ref=$IMAGE \
       -Dkubernetes.service-account=$FLINK_SERVICE_ACCOUNT \
       local:///opt/flink/examples/streaming/Iteration.jar
   2022-12-29 21:13:06,947 INFO  org.apache.flink.kubernetes.utils.KubernetesUtils            [] - Kubernetes deployment requires a fixed port. Configuration blob.server.port will be set to 6124
   2022-12-29 21:13:06,948 INFO  org.apache.flink.kubernetes.utils.KubernetesUtils            [] - Kubernetes deployment requires a fixed port. Configuration taskmanager.rpc.port will be set to 6122
   2022-12-29 21:13:07,861 WARN  org.apache.flink.kubernetes.KubernetesClusterDescriptor      [] - Please note that Flink client operations(e.g. cancel, list, stop, savepoint, etc.) won't work from outside the Kubernetes cluster since 'kubernetes.rest-service.exposed.type' has been set to ClusterIP.
   2022-12-29 21:13:07,868 INFO  org.apache.flink.kubernetes.KubernetesClusterDescriptor      [] - Create flink application cluster flink-application-cluster successfully, JobManager Web Interface: http://flink-application-cluster-rest.flink:8081
   ```

1. Examine os recursos do Kubernetes criados.

   ```
   kubectl get all -n <namespace>
   NAME READY STATUS RESTARTS AGE
   pod/flink-application-cluster-546687cb47-w2p2z 1/1 Running 0 3m37s
   pod/flink-application-cluster-taskmanager-1-1 1/1 Running 0 3m24s
   
   NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
   service/flink-application-cluster ClusterIP None <none> 6123/TCP,6124/TCP 3m38s
   service/flink-application-cluster-rest ClusterIP 10.100.132.158 <none> 8081/TCP 3m38s
   
   NAME READY UP-TO-DATE AVAILABLE AGE
   deployment.apps/flink-application-cluster 1/1 1 1 3m38s
   
   NAME DESIRED CURRENT READY AGE
   replicaset.apps/flink-application-cluster-546687cb47 1 1 1 3m38s
   ```

1. Encaminhe a porta para 8081.

   ```
   kubectl port-forward service/flink-application-cluster-rest 8081 -n <namespace>
   Forwarding from 127.0.0.1:8081 -> 8081
   ```

1. Acesse localmente a interface do usuário do Flink.  
![\[Acesse a interface do usuário do Flink.\]](http://docs.aws.amazon.com/pt_br/emr/latest/EMR-on-EKS-DevelopmentGuide/images/jobruns-flink-native-kubernetes-ui.png)

1. Exclua a aplicação do Flink.

   ```
   kubectl delete deployment.apps/flink-application-cluster -n <namespace>
   deployment.apps "flink-application-cluster" deleted
   ```

Para obter mais informações sobre o envio de aplicações para o Flink, consulte [Native Kubernetes](https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/native_kubernetes/) na documentação do Apache Flink.

# Requisitos de segurança da conta JobManager de serviço Flink para Kubernetes nativo
<a name="jobruns-flink-native-kubernetes-security-requirements"></a>

O JobManager pod Flink usa uma conta de serviço do Kubernetes para acessar o servidor da API Kubernetes para criar e assistir pods. TaskManager A conta JobManager de serviço deve ter as permissões apropriadas para create/delete TaskManager os pods e permitir que o TaskManager líder do ConfigMaps to watch recupere o endereço de JobManager e ResourceManager no seu cluster.

As regras apresentadas a seguir se aplicam a esta conta de serviço.

```
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - services
  verbs:
  - "*"
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - "*"
- apiGroups:
  - "apps"
  resources:
  - deployments
  verbs:
  - "*"
```